yaochow@home:~$

【思考】消息队列

消息队列

很多公司都有用到消息队列,那么消息队列解决了什么问题?

异步

写系统不只需要代码简洁易读更重要的是尽可能的对客户友好,这样公司才能赢得口碑,公司发展得好作为员工也不会差。

对于一般客户来说,只能感知到两个方面。第一个就是UI页面,客户不会直接对应用系统操作,普遍都是通过前端的页面操作,所以说前端页面会给客户第一印象。第二个就是效率,点击了一个按钮是否能够及时响应,作为客户来说,相信如果响应时间特别差,那可能就要扣分了。

比如一个功能有三步操作,A操作(2s),B操作(1s),C操作(5s)且每个操作互相没有关联。

同步:首先执行A,A执行完成后执行B,B执行完成后执行C,C执行完成,总耗时8s。

异步:首先执行A,在执行A的同时执行C,A执行完成后执行B,等待C执行完成,总耗时5s。

通过异步可以节省3s的时间。

异步的方式可以通过新建个线程,也可以通过消息队列(MQ)。

削峰

对于线上的系统来说,请求不会均匀的进来,半夜3.4点大家都睡觉了可能就没有请求了,晚上8.9点左右大家都下班吃完饭了,可能请求就多了起来。

作为一个高可用的系统是一定要兼容所有场景的,不能取个平均值,又要考虑成本。

通过异步解决了客户感官上的好感,但是后台系统却一会儿忙的要死,一会儿闲的无聊,如果对于客户的响应通过异步实现了,如果异步的后续进行同步操作那既不影响客户体验,又可以保证系统处于一个平稳的状态。这就是削峰的概念。

消息队列就可以解决这个问题,异步接收同步执行。

解藕

这个就不多说了。