向车站学习处理高并发高峰流量
程序员文章站
2022-03-10 18:22:20
向车站学习处理高并发高峰流量启发:高并发流量方案与火车站的思考背景:现实中流量最大的场所设施就是车站了,每天都有很多客流量而且节假日会更高关联网站的高并发流量和火车站的高客流量有着很多相识之处高流量,每天车站的客流量都是几十万级别的,节假日可能都是千万级别的客流量;产品应用也是;流量集中并发,在短时间内出现流量高峰比如节假日时段;产品应用也是;思路业务层级分级,在业务高峰时段可以对业务做分级处理,就像火车站的售票厅和候车室,这样买票的业务只需要去售票厅,将售票厅和候车室分离开,...
向车站学习处理高并发高峰流量
启发:高并发流量方案与火车站的思考
背景:现实中流量最大的场所设施就是车站了,每天都有很多客流量而且节假日会更高
关联
网站的高并发流量和火车站的高客流量有着很多相识之处
- 高流量,每天车站的客流量都是几十万级别的,节假日可能都是千万级别的客流量;产品应用也是;
- 流量集中并发,在短时间内出现流量高峰比如节假日时段;产品应用也是;
思路
- 业务层级分级,在业务高峰时段可以对业务做分级处理,就像火车站的售票厅和候车室,这样买票的业务只需要去售票厅,将售票厅和候车室分离开,进而使业务有效的分级分类处理;系统应用中也可以将业务分类分级,然后将请求流量指引到相应的业务处理模块or服务,这是最基本的处理机制
- 流量分流,宏观的分流是将一个城市的流量分流到不同的车站,微观的分流就是车站多个队列分流处理;当系统应用面临高并发流量的时候将流量使用负载均衡等方案将流量分担到多台服务器上进而实现了流量分流的目的;
- 队列处理,火车站的所业务都必须排队处理,每个买票进站口都是需要排队处理的;系统应用的架构中使用队列中间件(kafka或mq或。。。)来将业务进行队列处理,可以将每个业务请求变的可控高效;
- 令牌过滤,火车站规定必须持票进站就可以过滤了没有进站资格的客流量;在系统应该中不是所有的请求都是合法有效的请求,在服务器(nginx)阶段可以设置一个令牌桶给每个合法有效的请求发放令牌然后再将请求放行进而让模块或服务处理请求
- 区间阻隔,规定在火车开车前1个小时才能进战,业务上在没有开放的时段不予处理节省资源;经常出现在秒杀抢购类型的业务中,在业务没有开始的阶段所有关于该业务的请求都不予处理,因为都是没有必要的请求;
- 潮汐策略,就是在进站高峰时段可以将出战通道改成进站通道;基于虚拟机或虚拟化的方案下,可以将高并发的时候可以make多台服务器或节点资源来应对并发,当峰值过后节点应该弹性收缩会原有的规模
结论
目前所有应对高并发的方案思路都与自火车站应对高客流量的思路大体相同,我认为架构系统的设计思路可以向现实中的一些场景借鉴,多去观察现实中事物的现象有助于启发架构系统设计的思路
本文地址:https://blog.csdn.net/u011552182/article/details/107460017
上一篇: 面向对象的增删改查[小白篇]