架构初识
目前常用的架构
客户端 <---> [ 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容器 ](定时任务调度器)
应用与服务器之间的架构,有很多选择

目录结构
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)
├──→ 支付数据库
└──→ 消息队列

浙公网安备 33010602011771号