• 用【快餐店】理解日均亿级高并发分布式架构,秒懂!


    温馨提示:预估阅读时间:2.7分钟


    小伙子开了一家快餐店叫开封菜,主营炸鸡汉堡薯条,快餐店刚开始营业,小伙子一个人收银、炸鸡,所有活自己干。

    1、初始化 快餐店

    惊讶,快餐店居然也能用高并发分布式架构解决客流暴增?

     

    2、解耦后的快餐店

    惊讶,快餐店居然也能用高并发分布式架构解决客流暴增?

     

    假如有一天生病了,餐馆关门停业几天,什么活都干不了,所以这两项工作要解耦(耦:古代指的是两人并肩而耕地,一个不耕了,好家伙,这地就没法耕了)。解耦就是你炸鸡的工作不会影响到我收银的工作,怎么做呢,再招一个员工当收银员,原先那个员工专职做炸鸡师傅,这样就完成了系统解耦(即收银和炸鸡师傅那个工作互不干扰)。

    3、使用消息队列后的快餐店

    惊讶,快餐店居然也能用高并发分布式架构解决客流暴增?

     

    快餐店业务解耦后,业务很快又开始展开了,现在的消费流程是,收银员收款后告知后厨制作,但新问题又出现了,很多客人付款后在那里等,后面来的客人一看人多就走了,前面来的客人点了餐被后面的客人拿走,就很生气,发现这些问题后店铺引入了点餐排号器(这就是队列思想),点餐后客人知道自己是多少号,前面还有多少人,后厨根据点餐的序号进行餐点烹制,既解决了客人点餐的焦虑又解决了出餐和取餐不按顺序来做的困扰,这就是消息队列的作用:提高系统响应速度,顺序处理,削峰。

    4、使用集群后的快餐厅

    客人能够有序地拿到自己点的餐,服务满意度提高了,生意也火爆了起来,但后厨仅有一个厨师在炸鸡,只能废寝忘食、加班加点的干活,但还是忙不过来,顾客又开始抱怨了,这个时候店铺一下子招了五个炸鸡师傅,一下子缓解了工作压力,组成了炸鸡集群(集群:同一个业务部署在多台机器上,提高系统可用性).

    惊讶,快餐店居然也能用高并发分布式架构解决客流暴增?

     

    服务又能正常进行了,可是收银的柜台只有一个,队伍总是排得很长,排在后面的顾客不停地抱怨,这个时候只能增加收银柜台,又增加了三个收银员工,形成了收银集群,服务质量得到了很好的保证,根据实际业务升级的两套集群服务形成了一个集群体系。

    5、使用分布式后的快餐店

    惊讶,快餐店居然也能用高并发分布式架构解决客流暴增?

     

    随着后厨人数众多,一个厨师要炸鸡,不仅要自己分割鸡肉,还要进行原料的处理,在后厨不停地忙碌,但效率却不高,时间都浪费在去做餐品不同环节的路上和更换原材料、变更厨具上,店铺在请教其他专家后把后厨人员安排成专属环节厨师,这样就加快了餐品的输出,分割鸡肉,裹炸鸡粉,炸鸡分别由三个不同的厨师完成,这就是分布式的特点,加快了各个环节的输出。

    6、使用负载均衡后的快餐店

    惊讶,快餐店居然也能用高并发分布式架构解决客流暴增?

     

    现在的生意越来越好,后厨效率也得到了提升,出餐速度非常快,可收银下单的地方人又开始堆积起来,店铺又开了五个收银通道,为了确保每个收银通道都能一起工作避免资源浪费,就在门口安排了一个引导员,将顾客按照顺序引导到每一个收银通道去排队,按照第一个、第二个、第三个,直到第八个后又从第一个开始,这样就确保了每个通道资源不浪费,这就是负载均衡轮询方式的典型应用;

    可问题又来了,新安排的收银员由于业务刚上手对操作不熟练,导致分给她的客人迟迟下不了单,而几个老收银员由于业务熟练则能很快完成收银操作,这个时候店铺安排门口的引导员给熟悉业务的收银员多分配一些客人,给业务不熟练的收银员少分配几个客人,这就确保客人能及时的下单,这就是负载均衡权重的方式。

    7、使用热数据缓存后的快餐店

    惊讶,快餐店居然也能用高并发分布式架构解决客流暴增?

     

    整个店铺目前的发展已经非常稳定,各个环节都能够及时处理客人的需要,还有一个问题是店铺无法避免的,那就是用餐高峰总集中在早中晚那几个小时,其他四五个小时店里却没有什么客人,在客人密集的那段时间,后厨操作再快有时也无法满足客人的需要,总有客人抱怨,这个时候店铺就想办法,引进了一个食品保温箱,能够将当天生产的炸鸡汉堡放在里面保持温度而品质又不变,对店里客人经常点的菜品在没有客人的时候提前制作出来放在里面,当有客人下单后直接拿走,这就是热数据缓存机制。


    通过以上的服务解耦,引入消息队列,进行集群化分布式改造,进行负载均衡,搭建缓存数据集,小小的快餐店已经从一个单一化服务的店铺晋升为集群分布式服务的店铺,下一步就是接入外卖和外部订单系统进行云服务化。

    看了这些你是否懂得了业务解耦、消息队列、系统集群、分布式架构、负载均衡、热数据缓存等体系,当你了解这些,恭喜你,已经成为了初级的“PPT架构师”,那么如何才能架构日均亿级访问高并发、分布式的系统,并进阶成为一名真正的架构师?

    要想成为一名优秀的架构师必须需要有圈子和前辈带领少走弯路,必要的课程学习是少不了的,我们会通过一个架构师设计训练营告诉你如何更加进一步掌握架构师的能力!

  • 相关阅读:
    函数式编程(三元运算、文件操作、函数、装饰器)
    开发基础(练习题)
    开发基础(字符串操作、元祖、元组、Hash、字典、集合、字符编码转换)
    开发基础(字符编码、列表操作)
    开发基础 (变量、数据类型、格式化输出、运算符、流程控制、while循环)
    [LeetCode] 127. 单词接龙
    [LeetCode] 126. 单词接龙 II
    [LeetCode] 122. 买卖股票的最佳时机 II
    [LeetCode] 124. 二叉树中的最大路径和
    [LeetCode] 125. 验证回文串
  • 原文地址:https://www.cnblogs.com/icodingedu/p/11707981.html
Copyright © 2020-2023  润新知