架构
netaxe2023/05/18
前言
早期平台是一个单体应用,随着功能和需求的不断增多,维护一个单体巨石应用的成本和劣势逐渐凸显,并且到了无法忍受的地步。
每次小的功能更新都不得不重启整个后端服务,造成前端交互短暂失联。
单机数据库写请求量大量增加,导致数据库压力变大 数据库一旦挂了,那么整个业务都挂了 业务代码越来越多,都在一个 GIT 里,越来越难以维护 代码腐化严重、臭味越来越浓 上线越来越频繁,经常是一个小功能的修改,就要整个大项目要重新编译 协作成员增加,在同一项目中协作效率低(功能模块多,更新多,逐渐臃肿) 其他一些外围系统直接连接数据库,导致一旦数据库结构发生变化,所有的相关系统都要通知,甚至对修改不敏感的系统也要通知 每个应用服务器需要开通所有的权限、网络、FTP、各种各样的,因为每个服务器部署的应用都是一样的
架构设计原则
从架构了可维护性和标准化角度出发,每个后端应用,应该具备相对一致的代码目录结构、一致的配置加载规范、一致的消息总线配置。
所有微服务应用都应该是易部署,可重复的功能模块(可重复部署、简化部署步骤)
通用的 API 端点。
应用端口规划表
| 应用 | 前端 web | 后端 controller | 别名 |
|---|---|---|---|
| 微前端主应用 | 9980 | - | - |
| 基础平台 | 32200 | 31100 | base |
| 消息网关 | 32201 | 31101 | msg-gateway |
| 告警中心 | 32202 | 31102 | alert |
| IPAM | 32203 | 31103 | ipam |
| RBAC | 32204 | 31104 | rbac |
| 南向驱动 | 32205 | 31105 | south-driver |
| 监控中心 | 32206 | 31106 | neteye |
| 可视化指标 | 32207 | 31107 | metric |
| DCN 控制器 | 32208 | 31108 | dcn |
| DCS 控制器 | 32208 | 31108 | dcs |
| 工作流引擎 | 32209 | 31109 | work-flow |
| 资源平台 | 32210 | 31110 | cmdb |
| 私有平台 | 32211 | 31111 | private |
| 巡检平台 | 32212 | 31112 | inspect |
底层工具端口规划表
| 应用 | 端口 |
|---|---|
| apisix-dashboard | 39000 |
| apisix | 9080/9091/9092/9443 |
| etcd | 2379 |
| mongo | 37018 |
| mongo-express | 37017 |
| mysql | 36306 |
| redis | 36379 |
| rabbitmq | 31672/32672 |
| nacos | 8848 |
| pushgateway | 39091 |
| prometheus | 39090 |
