在云计算模型中,很多应用部署在一起,将产生数据交互的强烈需求。如在双11的时侯,几千万人向时向商城的订单系统下订单,而支付系统的能力只有几十万人的同时支付处理能力,怎么办?传统的处理方案主要是:限制商城同时下单的人数,但现实谁会拒绝用户下订单,这是现金流。因此,按照现实生活中公交车排队的处理经验,很多人流同时上一路公交车,采用排队机制,这种方案至少保证最终都上车,等待时间会增加。
图1:没有排队机制,最终造成治安事件,最终大家都上不了车
图2:排队机制,有秩序,最终保证每个人都能上车
一、为了解决,应用之间排队的需求,引入了消息中间件,业务常见的有kafaka、RabbitMQ等,一般称为MQ中间件。消息件的应用方式主要有:点对点方式:
1、点对点发送模型。类似于QQ点对点聊天,当接收者不在线时,QQ服务器暂时缓存信息,当接收者上线时再将该离线消息再接收。
2、发布、订阅模型。类似于新浪微博关注一些明星,当明星发布新消息时,我们(关注了该明星的人)登录weibo app时就能收到该明星的新消息,相当于群发机制。新浪通过该机制大大降低了服务器的开销,实现了app登录时按需获取。
二、消息中间件的价值很大。消息中间件在云计算中用得非常多,例如,采集web server产生的大量日志;商城订单系统等。
1、消峰作用:降低了业务在高峰期可能产生的业务死机影响,将高峰期的业务延缓处理,保证不影响业务的最终执行。如淘宝商城。
2、保证数据安全:通过消息中间件的缓存、确认机制,保证消息的最终执行可靠。如QQ离线聊天。
3、解耦软件,保证灵活性:数据的发送端、接收端不再强关联,由第三方软件进行管理,可保证数据处理的灵活性。如weibo的明星关注订阅功能。