架构初识

目前常用的架构

客户端 <---> [ Nginx / Apache] <---> [ Tomcat 或 uWSGI ] <---> [ 你的Java或Python应用代码 ]

# Java技术栈
[浏览器] -> [Apache/Nginx] --(HTTP/AJP)--> [Tomcat] --(内部调用)--> [你的Java Servlet/Spring代码]
                                                  ↑
                                          (部署于容器内,遵循Servlet API)

# Python技术栈
[浏览器] -> [Apache/Nginx] --(uwsgi协议)--> [uWSGI] --(WSGI调用)--> [你的Python Flask/Django代码]
                                                  ↑
                                          (作为独立模块被导入,遵循WSGI接口)

加入docker架构

客户端请求
    ↓
[ Cloudflare / CDN ](可选)
    ↓
[ docker环境 ]
    ↓
[ Nginx容器 ](作为反向代理和静态文件服务器)
    ├── 前端静态文件(Vue.js构建产物)→ 直接返回
    └── API请求(/api/*) → 反向代理到后端
            ↓
        [ uWSGI容器 ](监听8000,仅容器网络内访问)
            ↓
        [ Django/Flask应用 ](在uWSGI容器内)
            ├── 同步处理 → [ Redis容器 ](缓存)→ [ PostgreSQL容器 ]
            └── 异步任务 → [ Redis容器 ](消息队列,一般是rabbitmq)
                              ↓
                        [ Celery Worker容器 ](处理任务)
                              ↓
                        [ Celery Beat容器 ](定时任务调度器)

应用与服务器之间的架构,有很多选择

image

目录结构

myapp/
├── docker-compose.yml
├── nginx/
│   ├── Dockerfile           # Nginx的Dockerfile
│   ├── nginx.conf          # 主配置文件
│   ├── conf.d/             # 额外的配置文件目录
│   │   └── app.conf        # 应用特定的配置
│   └── ssl/                # SSL证书目录(可选)
├── backend/(后端API服务)
│   ├── Dockerfile
│   ├── requirements.txt
│   └── app/(你的Python代码,现在是纯API)
├── frontend/(前端Vue.js项目)
│   ├── Dockerfile
│   ├── package.json
│   ├── vue.config.js
│   ├── public/
│   ├── src/
│   │   ├── main.js
│   │   ├── App.vue
│   │   ├── router/
│   │   ├── store/(Vuex/Pinia)
│   │   └── api/(API调用封装)
├── postgres/
│   └── init.sql(可选)
└── .env(环境变量)

微服务架构

客户端请求
    ↓
[ docker环境 ]
    ↓
[ API Gateway / Nginx ] (API网关)
    ↓
    ├──→ [ 用户服务容器 ] (端口8001)
    │        ├──→ 用户数据库
    │        └──→ Redis缓存
    ├──→ [ 订单服务容器 ] (端口8002)
    │        ├──→ 订单数据库
    │        └──→ Redis缓存
    ├──→ [ 商品服务容器 ] (端口8003)
    │        ├──→ 商品数据库
    │        └──→ ElasticSearch
    └──→ [ 支付服务容器 ] (端口8004)
             ├──→ 支付数据库
             └──→ 消息队列
posted @ 2025-12-02 10:20  四月丿  阅读(6)  评论(0)    收藏  举报