高并发实时后台服务设计杂谈
摘要:不管是双十一剁手节还是新年微信红包,此时此刻都离不开一个可靠和稳定后台服务,针对高并发(每秒上万的QPS),低延迟(毫秒级应答)的业务场景,后台架构的设计对业务的成败以及用户体验起到了至关重要的作用。根据No Silver Bullet理论,在软件工程里是没有万能的终极武器,只有将各种方法综合运用才是王道。本文根据作者的经验总结一些可参考的实时高并发后台架构解决方案。
流控
后台服务可以支撑的最大并发量,虽然理论上可以通过添加节点(机器)的方法横向扩展,即扩容,但考虑到成本通常后台服务都会存在一个预估的能力上限。开发和运维同学会根据业务预估的请求量和后台单个节点可以支撑的最大并发量来计算可能需要部署的后台节点数量。其中,单个后台节点的处理能力可以通过压测得到。这里可能埋藏了一个隐患,因为人的预估都是不准确的,如果不幸后台服务的最大支撑能力低于了实际用户的请求量,那么对后台系统造成的影响可能就如同DDOS攻击,严重的话整个后台服务都会出现不可用,那么对用户和业务都是不可接受的。
因此,后台服务首先要把自家大门累扎实,方法就是流控。根据业务场景定制合理的流控策略。比如,60秒内相同的用户只能访问5次,否则在最前端直接拒绝,减少对后台更底层系统的不必要的压力,从而防止后台服务的过载。举个现实中的例子,每逢过年都要在12306上刷火车票,