首页互联网技术互联网技术中间化,互联网技术中间化的原因

互联网技术中间化,互联网技术中间化的原因

cysgjjcysgjj时间2024-03-07 22:30:09分类互联网技术浏览43
导读:系统架构中,消息中间件起到了什么作用?系统架构中,消息中间件起到了什么作用?现在很多系统都引入的消息中间件,我们公司现在也有基于RabbitMQ的消息中间件平台,如果项目需要使用的MQ的话,只需要申请即可;那么引入消息中间件是为了解决什么问题,我谈谈自己的看法:我们有很多业务系统,实际上实时性要求并没有那么高,完全是可以进行异步调用的……...
  1. 系统架构中,消息中间件起到了什么作用?

系统架构中,消息中间件起到了什么作用

现在很多系统都引入的消息中间件,我们公司现在也有基于RabbitMQ的消息中间件平台如果项目需要使用的MQ的话,只需要申请即可;那么引入消息中间件是为了解决什么问题,我谈谈自己的看法:

我们有很多业务系统,实际上实时性要求并没有那么高,完全是可以进行异步调用的。

我曾经做过一个系统是客服通知性质的系统,比如客户十天后需要缴费了,那么我们会根据原始数据+模板,生成短信通知,然后发送给短信平台进行短信发送。这个短信平台提供了一个接口,其他系统如果想要发送短信的话,只要把手机号+短信内容通过接口发送给短信平台,再由短信平台和各个服务商进行对接。这个场景就非常适合改成异步调用,只需要把待发送短信扔到消息队列中,再由短信平台取出待发送短信,进行发送。

互联网技术中间化,互联网技术中间化的原因
图片来源网络,侵删)

再举个例子,如果一个服务有调用链路,比如A->B->C,***如A调B速度很快,但是B调C速度较慢或不稳定,那么可以评估一下C是不是可以做异步调用,这样可以在不影响业务流程的前提下,加快服务的响应速度。

不知道大家有没有遇到过这样的问题,A系统有一些数据,B系统需要这些数据。

一种方法是B系统调用A系统的接口进行查询,但是由于数据的状态可能会发生变化,B系统需要在数据变化的时候做一些业务操作,这时候需要A系统在数据有变化的时候,主动通知B系统;那么可以B系统提供一个接口,A系统主动通知;这样做实现起来没有问题,但是困难也比较大:

互联网技术中间化,互联网技术中间化的原因
(图片来源网络,侵删)

那么最好的解决方案是:A系统将数据发送到MQ中,哪些系统需要的话,就去消费(需要被授权);如果哪天某个系统下线了,就取消消费。

现在大型网站架构技术中,有一个高频词就是“消息中间件”,我们在很多大公司分享的技术PPT或者岗位要求里都会看到这个名词。什么是消息中间件呢以及它能解决什么问题呢?

通过消息中间件可以让不同的系统模块通过传递消息的方式来激活对方的***以完成相应的操作。消息中间件本质上也算是一种队列支持同步异步方式来传输消息。

互联网技术中间化,互联网技术中间化的原因
(图片来源网络,侵删)

一般情况下我们把消息中间件简称为MQ

通过消息中间件可以帮我们解决很多问题,比如说:

1、系统解耦

比如一个用户注册流程,可能涉及这些操作:

向用户库中写入数据;

向相关附加表中写入数据;

发送欢迎短信、邮件、站内信等。

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。

冗余〈存储)方面,有些情况下处理数据的过程会失败,造成数据丢失,可使用消息中间件进行数据持久化。扩展性方面,消息中间件解耦了应用的处理过程,所以提高消息入队和处理的效率是很容易的,只要另外增加处理过程即可,不需要改变代码,也不需要调节参数。

在很多时候应用不想也不需要立即处理消息,消息中间件提供了异步处理机制,允许应用把这些消息放入消息中间件中,但并不立即处理它,在之后需要的时候再慢慢处理。

......

消息中间件,总结起来作用有三个:异步化提升性能、降低耦合度、流量削峰。具体可一同沟通交流

消息中间件主要有三个作用:系统间解耦,异步化,流量削峰。我们通过实例来说明。

***设你在一个电商系统购物,支付成功后,系统应该怎么把这个消息告诉物流系统?有两种思路:

方式一:支付系统直接调用物流系统。这样会有一个问题:支付系统和物流系统产生了强依赖,当物流系统出现问题,直接影响用户交易流程,导致支付失败。

方式二:支付系统把支付成功消息推送给消息中间件,然后交易流程结束。物流系统订阅这个消息进行后续处理。这样即使物流系统出现问题,也不影响交易系统。

***设物流系统处理业务需要100毫秒。

消息中间件,在目前主流的架构中已经成了不可或缺的一部分,作用的话无外乎这几种:解耦、异步、削峰限流,达到系统的高可用。目前比较主流的消息中间件有Kafka、RabbitMQ、ActiveMQ、RocktMQ等,Redis也可以做消息中间件哦,具体可根据实际使用场景来选择。下面我们来看下这几个主要作用,

1、系统解耦

解决的问题就是N个系统糅合在一起,相互调用,一团糟,如下图

然后,我们进行系统的改造,加入消息中间件来理清楚上面这些纷纷扰扰的关联,

这样是不是很清晰了,系统之间不会耦合在一起了,就达到了解耦的效果,在分布式的大型系统中,这个功能尤为重要。

2、异步调用

异步调用,主要解决的是同步阻塞和耗时的问题,比如,只有做完B才能到C,耗时的话也是20+200ms。

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/9740.html

系统消息中间件
高效的互联网技术 互联网技术协会美国,互联网技术协会美国成员