总览

画板

后端

1. 后端体系列表

一体式 WEB 应用 纯接口应用 定时任务 异步任务 常驻任务
应用缺陷 1. 项目众多
2. MySQL单节点,压力很大
3. php-fpm 瓶颈无法应付大量并发流量
1. 不能直观得到任务执行结果
2. 没有同一调度中心,任务分散在各个项目中
3. 最好有可视化界面
1. 执行结果未知
2. 没有监控
3. 一般使用 Redis 队列,队列 Redis 在 ECS 中太分散
改进建议 1. 建议新增 API Gateway,注册中心,限流,日志统一,过滤请求,统计
2. 使用分布式数据库 TiDB 或者 Master-Slave 架构 MySQL(进行中)
3. 使用其他方案替代 php-fpm
1. 增加可视化可查看定时任务执行完成情况
2. 增加调度中心
1. 搭建统一的分布式 Redis 集群用于异步队列
2. 能直观得到异步任务执行结果
3. 增加监控

2. 分层架构图

现有架构 - 图2

3. 扩展与改进

现阶段,后端应用都是单体式应用,所有应用依赖于同一个数据库,导致数据库表越来越多,调整越来越困难,优化功能如果涉及到表结构改动,上线比较困难。

数据库表结构被多个服务依赖,牵一发而动全身,很难调整。理清业务边界,整理表架构,垂直拆分数据库。

架构中的 SLB 负载均衡层,直接将流量转发到 ECS 主机或者 K8S 集群的 Ingress 入口。直接部署在 ECS 中的应用都是单节点应用,没有用到 SLB 功能。需要将 PHP 及其他后端应用集体迁移到 K8S 集群中。K8S 自带负载均衡的能力,可以节省 SLB 实例费用,且能提高并发处理。

现阶段存储层压力比较大。没有缓存层,对 Redis 使用较少,查询都是直接落到 MySQL 上。适当增加缓存,减少查询压力。(指定缓存使用规范)

数据库表结构被多个服务依赖,牵一发而动全身,很难调整。理清业务边界,整理表架构,垂直拆分数据库。

4. 其他