高并发原则
在设计高并发的应用程序时,遵循以下原则可以更好的实现目的。
无状态
应用无状态方便水平扩展。实际的情况通常是,应用是无状态的,但是配置文件是有状态的,例如不同机房的应用读取不同的数据源。需要配置文件或配置中心来分配。
搭配K8S,水平扩展更方便。
拆分
在系统设计时,要考虑到系统是否做拆分。如果资源有限,并且用户并没有那么多,可以做一个大而全的系统。
而高并发的应用,通常是要做拆分的。
拆分可以依据多个维度:
- 系统维度 :如订单、库存、商品系统等
- 功能维度 :如,对登录系统再拆分,划分为 :验证码登录、微信登录、密码登录等功能。
- 读写维度 :针对读写再做分离,读服务可以使用缓存、写服务使用分库分表。
服务化
首先判断单点服务是否可以满足,
如果不能满足,集群可以吗?使用Nginx做负载均衡是否可以解决?
服务越来越多,是否要使用服务自动注册与发现?
某些服务访问量太大,导致整个系统不可用,要不要上服务降级和限流?哪些是主要服务?
消息队列
消息队列的作用有三个 :削峰、解耦、异步。
某一个事件消息,多个系统需要使用到。如,注册了一个新的用户,优惠券系统需要送劵、积分系