总览
后端
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. 分层架构图
3. 扩展与改进
现阶段,后端应用都是单体式应用,所有应用依赖于同一个数据库,导致数据库表越来越多,调整越来越困难,优化功能如果涉及到表结构改动,上线比较困难。
数据库表结构被多个服务依赖,牵一发而动全身,很难调整。理清业务边界,整理表架构,垂直拆分数据库。
架构中的 SLB 负载均衡层,直接将流量转发到 ECS 主机或者 K8S 集群的 Ingress 入口。直接部署在 ECS 中的应用都是单节点应用,没有用到 SLB 功能。需要将 PHP 及其他后端应用集体迁移到 K8S 集群中。K8S 自带负载均衡的能力,可以节省 SLB 实例费用,且能提高并发处理。
现阶段存储层压力比较大。没有缓存层,对 Redis 使用较少,查询都是直接落到 MySQL 上。适当增加缓存,减少查询压力。(指定缓存使用规范)
数据库表结构被多个服务依赖,牵一发而动全身,很难调整。理清业务边界,整理表架构,垂直拆分数据库。