大家想一想在你们平时开发的系统里面有没有这种情况,就是你们系统会调用到第三方接口服务,而且这个接口服务是在你流程里面进行同步调用的,这个时候你们的系统性能是直接和第三方接口服务挂钩的,也就是第三方接口服务性能的好坏直接影响到你自己的系统。
我想大部分人都遇到过这样的系统调用吧,我们公司也经常遇到,合作商给的接口,就直接同步调用了,上个月我们有一个第三方接,开始组员调研时没太仔细,以为对于我们业务影响不是太大,就采用了直接同步调用,以至于线上运行两周后内存增长迅速,性能吞吐量逐渐下降,后来发现是因为三方接口性能支撑不住我们现有并发。如是就改成了异步,使用我们的消息中间件MQ来解决此类情况,那么今天我们就先来聊聊相关中间件的必经之路,即调研和如何取舍的话题
什么是消息中间件
说到消息中间件,我想大家应该并不陌生,或多或少都有所接触。其实通俗的理解就是,消息中间件MQ也就是一种开发好的系统,并且独立部署,然后我们业务系统通过它来发消息和收消息以至于达到异步调用的效果。
消息中间件有什么用处
消息中间件既然被发明出来,肯定是有诸多好处的,是能解决我们实际问题的,对我们开发最直接的影响就是提升系统性能、系统间解耦、流量削峰等,下面分别对其解释下,方便大家更好的去理解MQ。
1,异步化提升系统性能
现在假设有两个系统A和B,其中A系统处理业务大概20毫秒,B系统处理业务大概180毫秒,然后A系统调用B系统这一过程一共是花了200毫秒。如果这里使用了消息中间件的话,则是A系统处理业务20毫秒,发送消息到MQ中2毫秒然后就直接返回给用户了,B系统什么时候去MQ中取消息A系统此时是不管的,所以对于用户来说22毫秒就得到了返回,即使用MQ直接提升了我们系统的性能。
2,系统间解耦
如上A B系统所示,即使B系统出现了故障,于A系统来说是不关心的,即用户也就是无感知的,B系统恢复了就会自动再去取消息来处理业务。所以,消息中间件能使系统间解耦,且使系统间不互相直接影响。