架构技术选型设计

一、服务器部署

1、采用集群模式,使用Nginx做反向代理,结合Consul实现动态负载均衡

2、基于微服务,不同服务分布于不同的服务器集群

3、静态资源采用独立的服务器集群

4、使用 Git 和 jenkins 实现版本控制和文件同步发布

5、采用Docker布局集群和分布式中的服务器应用

 

二、服务层

1、利用PHP swoft/Hyperf 实现微服务

2、采用异步、并行方式处理部分业务

3、部分业务,如限流、降级、防DDos攻击直接使用Nginx + Lua处理,不经过PHP

4、服务间通信采用RPC + MQ通信

5、使用PHP + RabbitMQ 等消息队列处理高并发场景,如秒杀

 

三、数据库层(MySQL)

1、基于微服务,进行不同服务的分库

2、采用MySQL XA进行跨库事务处理

3、使用MySQL Federated 引擎管理后台数据,整合分布式数据库不同库之间的联查和统计

4、将部分量大或频率高且与其他服务关联小的数据抽取出来单独立库,如消息记录

5、MySQL架构使用一主多从,通过MHA + Keepalived 保证MySQL的高可用,自动容灾

6、结合业务对大表进行拆分

 

四、数据库缓冲层

1、分布式Redis

2、MongoDB集群,采用MongoDB快速处理geo地理位置索引,保存非事务非关系数据,降低MySQL负载

3、利用Elasticsearch搜索引擎提高数据查询速度,降低MySQL负载

4、多级缓存(从客户端请求开始,到请求处理结束各级)

 

 



Top