本文来说下消息中间件的核心思想
传统的Http协议调用接口存在那些问题
采用同步的形式调用接口,如果调用的过程非常耗时间的话,客户需要等待非常久的时间才会响应;这样对客户端体验非常不好。而且会员成功了,后面失败了也会导致整体失败,没有补偿机制。
痛点1
有些复杂的业务系统,一次用户请求可能会同步调用N个系统的接口,需要等待所有的接口都返回了,才能真正的获取执行结果。
这种同步接口调用的方式总耗时比较长,非常影响用户的体验,特别是在网络不稳定的情况下,极容易出现接口超时问题。
痛点2
很多复杂的业务系统,一般都会拆分成多个子系统。我们在这里以用户下单为例,请求会先通过订单系统,然后分别调用:支付系统、库存系统、积分系统 和 物流系统。
系统之间耦合性太高,如果调用的任何一个子系统出现异常,整个请求都会异常,对系统的稳定性非常不利。
痛点3
有时候为了吸引用户,我们会搞一些活动,比如秒杀等。
如果用户少还好,不会影响系统的稳定性。但如果用户突增,一时间所有的请求都到数据库,可能会导致数据库无法承受这么大的压力,响应变慢或者直接挂掉。
对于这种突然出现的请求峰值,无法保证系统的稳定性。
采用多线程异步的形式实现有优缺点
异步操作可以减少客户端等待的时间,但缺点是容易消耗CPU资源,就是开启线程池,也会造成客户端长时间的等待。
详细说明:
A、对我们cpu的性能不是很好,因为频繁创建线程;就算使用线程池,在高并发情况下,如果超出了线程池核心数还是会等待。
B、开启了默认情况下是没有返回结果
C、没有补偿机制,如果有重试的话,也会存在幂等性问题
消息中间件核心思想有那些
异步通讯、自动补偿与重试、分布式事务、解决流量削峰问题、系统的解耦