首页 » 搜狗SEO » 系统架构中,消息中间件起到了什么作用,为什么要用网站框架呢。

系统架构中,消息中间件起到了什么作用,为什么要用网站框架呢。

访客 2024-08-31 0

扫一扫用手机浏览

文章目录 [+]

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

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

异步调用

系统架构中,消息中间件起到了什么作用,为什么要用网站框架呢。 系统架构中,消息中间件起到了什么作用,为什么要用网站框架呢。 搜狗SEO

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

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

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

系统解耦

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

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

  1. 通知过程中有问题,比如B系统down掉了、B系统在发布,那么A系统需要考虑重发的问题;
  2. 如果数据多、变化快,那么会对B系统带来很大的压力(不停地进行接口调用);
  3. C系统说,我也想要这些数据,我也做个接口你通知一下我吧;
  4. DEFG系统说...我也想要...A系统开发猝...

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

流量缓冲

我们之前做过的一个项目,大概功能是这样的。(秒杀系统经常会用到,但是因为这个系统是我们一个实际项目,所以就用这个项目举例了)

A系统对外提供接口,有内网系统调用,也有互联网端的系统调用;互联网端的流量不好估计,如果接口压力过大的话,很有可能把A系统压垮,从而影响到业务流程。于是我们在A系统和互联网端之间,增加了一层,功能也很简单,接收到请求之后,直接扔到MQ中,再由一个程序匀速地从MQ里面拿请求出来,调用A系统;这样就起到了一个流量缓冲的作用。(并没有让互联网端的系统和A系统改造,他们唯一要做的就是改一下接口地址)。

能想到也就这么多了,欢迎大家补充。

希望我的回答,能够帮助到你!我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

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

什么是消息中间件?

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

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

消息中间件在架构中发挥了重要作用

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

1、系统解耦

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

  • 向用户库中写入数据;

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

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

在没有使用消息中间件时,这些操作可能都是阻塞式的一步一步进行着,万一某个环节出现异常后续环节可能就无法进行了,这就是典型的高耦合!但当我们引入消息中间件后,用户注册成功后只要生产一条消息,然后由不同的消费者(模块)去消费(执行特定操作),这样系统间的耦合度就低了。

2、异步调用

上面举的会员注册的例子同样适用于此处,同步阻塞式调用会使得调用链时间周期过长,而异步调用极大的缩短了调用链的时间。

3、队列缓冲

消息中间件就像一个蓄水池,可将大量请求存储下来让后台逐一处理,所以像秒杀系统都少不了消息系统。

主流的消息中间件>产物/strong>

现在市面上有很多消息中间件,应用最为广泛的主要有:RabbitMQ、Kafka、RocketMQ、ActiveMQ等。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

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

1、系统解耦

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

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

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

2、异步调用

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

加入消息中间件,改成异步调用后,A可以同时调用B和C,时间也减少了,提高效率。

3、削峰限流

削峰限流主要解决的是高并发的大访问量场景情况下,在服务前面加一层缓冲,由消息中间件做一层过滤,如果流量太大的话就会被舍弃一部分,其他未被舍弃的部分进入队列排队,保护了后端服务的可用性。

差不多,先写这些吧。

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

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

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

......

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

相关文章

海外独立站搭建攻略,打造跨境电商新阵地

随着全球电子商务市场的蓬勃发展,越来越多的企业开始布局跨境电商。而海外独立站作为企业品牌展示、产品销售和客户服务的重要平台,已成为...

搜狗SEO 2025-01-04 阅读0 评论0

海外网站设计图背后的艺术与科技交融

在当今数字化时代,网站设计已经成为企业品牌形象的重要组成部分。一个优秀的网站设计不仅能够吸引访客的眼球,更能传递出企业的核心价值观...

搜狗SEO 2025-01-04 阅读0 评论0