消息中间件 订阅
可与OA、ERP集成的免费消息中间件Active Messenger(简称AM)是一款非常实用的企业即时通讯软件。系统提供免费的消息中间件(以com组件的方式提供),开放给第三方程序使用。 展开全文
可与OA、ERP集成的免费消息中间件Active Messenger(简称AM)是一款非常实用的企业即时通讯软件。系统提供免费的消息中间件(以com组件的方式提供),开放给第三方程序使用。
信息
背    景
国内信息化建设的日益深入
外文名
Active Messenger
中文名
消息中间件
属    性
企业即时通讯软件
消息中间件简介
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
收起全文
精华内容
下载资源
问答
  • 消息中间件
    2021-06-15 21:12:18

    消息中间件(MQ)的定义

    其实并没有标准定义,一般认为,消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布
    式系统中的其余各个子系统进行集成。

    几个关键词:

    • 高效:对于消息的处理处理速度快。

    • 可靠:一般消息中间件都会有消息持久化机制和其他的机制确保消息不丢失。

    • 异步:指发送完一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。

    一句话总结,消息中间件不生产消息,只是消息的搬运工。

    为什么要用消息中间件?

    假设一个电商交易的场景,用户下单之后调用库存系统减库存,然后需要调用物流系统进行发货,如果交易、库存、物流是属于一个系统的,那么
    就是接口调用。但是随着系统的发展,各个模块越来越庞大、业务逻辑越来越复杂,必然是要做服务化和业务拆分的。这个时候就需要考虑这些系统之
    间如何交互,一般的处理方式就是RPC(Remote Procedure Call,具体实现如Dubbo、SpringCloud)。系统继续发展,可能一笔交易后续需要调用几十个接
    口来执行业务,比如还有风控系统、短信服务等等。这个时候就需要消息中间件登场来解决问题了。

    在这里插入图片描述

    所以消息中间件主要解决分布式系统之间消息的传递,同时为分布式系统中其他子系统提供了松耦合的架构,同时还有以下好处:

    • 低耦合
      :不管是程序还是模块之间,使用消息中间件进行间接通信。

    • 异步通信能力:使得子系统之间得以充分执行自己的逻辑而无需等待。

    • 缓冲能力:消息中间件像是一个巨大的蓄水池,将高峰期大量的请求存储下来慢慢交给后台进行处理,对于秒杀业务来说尤为重要。

    • 伸缩性:是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。就像弹簧挂东西一样,用
      户多,伸一点,用户少,缩一点。衡量架构是否高伸缩性的主要标准就是是否可用多台服务器构建集群,是否
      容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。

    • 扩展性:主要标准就是在网站增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线
      新产品。比如用户购买电影票的应用,现在我们要增加一个功能,用户买了铁血战士的票后,随机抽取用户送异形的限量周边。怎么做到不改动用户购
      票功能的基础上增加这个功能。熟悉设计模式的同学,应该很眼熟,这是设计模式中的开闭原则(对扩展开放,对修改关闭)在架构层面的一个原则。

    在这里插入图片描述

    和RPC有何区别?

    RPC和消息中间件的场景的差异很大程度上在于就是“依赖性”和“同步性”。

    • 依赖性
      比如短信通知服务并不是交易环节必须的,并不影响下单流程,不是强依赖,所以交易系统不应该依赖短信服务。如果是RPC调用,短信通知服
      务挂了,整个业务就挂了,这个就是依赖性导致的,而消息中间件则没有这个依赖性。
      消息中间件出现以后对于交易场景可能是调用库存中心等强依赖系统执行业务,之后发布一条消息(这条消息存储于消息中间件中)。像是短信通
      知服务、数据统计服务等等都是依赖于消息中间件去消费这条消息来完成自己的业务逻辑。

    • 同步性
      RPC方式是典型的同步方式,让远程调用像本地调用。消息中间件方式属于异步方式。

    消息中间件有些什么使用场景?

    异步处理

    场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式。

    1. 串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。

    在这里插入图片描述

    1. 并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并
      行的方式可以提高处理的时间。

    在这里插入图片描述

    假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。

    小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢?

    引入消息队列,将不是必须的业务逻辑,异步处理。

    在这里插入图片描述

    按照以上约定,用户的响应时间相当于是注册信息写入数据库的时间,也就是 50 毫秒。注册邮件,发送短信写入消息队列后,直接返回,因此写入
    消息队列的速度很快,基本可以忽略,因此用户的响应时间可能是50毫秒。因此架构改变后,系统的吞吐量提高到每秒20QPS。比串行提高了3倍,比
    并行提高了两倍。

    应用解耦

    场景说明:用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。

    传统模式的缺点:

    • 假如库存系统无法访问,则订单减库存将失败,从而导致订单失败;

    • 订单系统与库存系统耦合;

    如何解决以上问题呢?引入应用消息队列后的方案

    • 订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。

    • 库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作。

    在这里插入图片描述

    假如:在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了,实现订单系统与
    库存系统的应用解耦。

    流量削峰

    流量削峰也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。

    应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列:可以控制活动的人
    数;可以缓解短时间内高流量压垮应用。

    在这里插入图片描述

    在这里插入图片描述

    用户的请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面;秒杀业务根据消息队
    列中的请求信息,再做后续处理。

    日志处理

    日志处理是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题。架构简化如下:

    • 日志采集客户端:负责日志数据采集,定时写入Kafka队列

    • Kafka消息队列:负责日志数据的接收,存储和转发

    • 日志处理应用:订阅并消费kafka队列中的日志数据

    在这里插入图片描述

    消息通讯

    消息通讯是指消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。比如实现点对点消息队列,或者聊天室等。

    • 点对点通讯:客户端A和客户端B使用同一队列,进行消息通讯。

    • 聊天室通讯:客户端A,客户端B,客户端N订阅同一主题,进行消息发布和接收。实现类似聊天室效果。

    消息中间件的编年史

    在这里插入图片描述

    常见的消息中间件比较

    ActiveMQRabbitMQRocketMQKafka
    性能6000+万级(12000+)十万级百万级
    消息持久化支持支持支持支持
    多语言支持支持支持很少支持
    社区活跃度
    支持协议多(JMS,AMQP…… )多(AMQP,STOMP,MQTT…… )自定义协议自定义协议
    优点成熟,已经在很多公司得到应用。较多的文档。各种协议支持较好,有多个语言的成熟客户端。性能较好,管理界面较丰富,在互联网公司也有较大规模的应用,有多个语言的成熟客户端。模型简单,接口易用。在阿里有大规模应用。分布式系统,性能很好,版本更新很快。天生分布式,性能最好,所以常见用于大数据领域。
    缺点性能较弱。缺乏大规模吞吐的场景的应用,有江河日下之感。内部机制很难了解,也意味很难定制和掌控。集群不支持动态扩展。文档少,支持的语言较少。运维难度大,偶尔有数据混乱的情况,对ZooKeeeper强依赖。多副本机制下对带宽有一定的要求。

    如果一般的业务系统要引入 MQ,怎么选型:

    • 用户访问量在ActiveMQ的可承受范围内,而且确实主要是基于解耦和异步来用的,可以考虑ActiveMQ,也比较贴近Java工程师的使用习惯,但是
      ActiveMQ现在停止维护了,同时ActiveMQ并发不高,所以业务量一定的情况下可以考虑使用。

    • RabbitMQ作为一个纯正血统的消息中间件,有着高级消息协议AMQP的完美结合,在消息中间件中地位无可取代,但是erlang语言阻止了我们去深
      入研究和掌控,对公司而言,底层技术无法控制,但是确实是开源的,有比较稳定的支持,活跃度也高。

    • 对自己公司技术实力有绝对自信的,可以用RocketMQ。

    所以中小型公司,技术实力较为一般,技术挑战不是特别高,用ActiveMQ、RabbitMQ 是不错的选择;大型公司,基础架构研发实力较强,用RocketMQ
    是很好的选择
    ;如果是大数据领域的实时计算、日志采集等场景,用Kafka是业内标准的,绝对没问题,社区活跃度很高,几乎是全世界这个领域的事实性规范。

    整体上来看,使用文件系统的消息中间件(kafka、rokcetMq)性能是最好的,所以基于文件系统存储的消息中间件是发展趋势,从存储方式和效
    率来看文件系统>KV存储>关系型数据库。

    更多相关内容
  • 尚硅谷_消息中间件RabbitMQ_课件
  • 从 0 开始带你成为消息中间件实战高手
  • 消息中间件架构讨论

    2021-02-25 14:11:59
    接上一篇的《业务方对消息中间件的需求》,在可用性和可靠性的基础上,讨论各种架构的优缺点,最后给出自己关于消息中间件的架构思考。首先还是来看Kafka的系统架构(做消息中间件逃不开要去了解Kafka)。...
  • 主要介绍了springboot使用消息中间件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本文来自于csdn,文章分享了分布式消息中间件,主要基于JMS规范、Rocketmq的介绍、部署方式、特性的一些使用几大模块阐述。 今天要给大家分享的是分布式消息中间件消息中间件主要是实现分布式系统中解耦、异步消息...
  • 最近在研究一些消息中间件,常用的MQ如RabbitMQ,ActiveMQ,Kafka等。NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。官方和第三方还为NSQ开发了...
  • 消息中间件,已经成为互联网企业应用系统内部通信的核心手段,是目前企业内主流标配技术,它具有解耦、异步、削峰、签收、事务、流量控制、最终一致性等一系列高性能架构所需功能。 当前使用较多的消息中间件有...
  • 消息中间件

    2021-06-16 21:12:45
    本节为go的消息中间件,主要讲解go在消息中间件中的一些应用。
  • Apache Pulsar是一个企业级的分布式消息系统,最初由Yahoo开发并在2016年开源,目前正在Apache基金会下孵化。Plusar已经在Yahoo的生产环境使用了三年多,主要服务于Mail、Finance、Sports、 Flickr、 the Gemini Ads...
  • 消息中间件书籍

    2018-11-15 08:33:59
    收集消息中间件相关书籍,RabbitMQ实战高效部署分布式消息队列以及RabbitMQ实战指南还有kafka。
  • 119章,若失效请联系
  • 阿里分布式消息中间件RocketMQ-深入解析.docx
  • kafka是一个款分布式发布和订阅系统,主要用于大数据的数据流处理和作为消息中间件的使用,相比其他消息中间件他的特点是高性能高吞吐量,因为他并没有完全遵循AMQP(高级消息队列协议)。 2.应用场景 行为跟踪:...
  • Kafka是大数据常用的消息中间件,是由Apache开发的一种发布订阅消息系统,它是一个分布式的、分区的和重复的日志服务。它的模型大概就是这个样子 我们可以看到两个熟悉的角色 Producer生产者 Consumer消费者 这两个...
  • SpringBoot集成RabbitMQ消息中间件的使用。消息管理中心,消息提供方,消息消费方,并实现消息提供返回的ack校验以及借用redis完成消息补偿机制。
  • 摘 要:给出了用中间件技术整合分离的业务系统的方法,给出了利用消息中间件完成数据转换、数据传输、数据平衡等关键技术的具体实现方法,是解决目前大量存在的系统整合问题的理想方案。 关键词:系统整合;J2EE;...
  • 消息中间件rabbitMq笔记,很详细,适用于Java开发人员。
  • 消息中间件在分布式系统中的作用介绍,让你能够更深入了解什么是消息中间件
  • 主要对ActiveMQ消息中间件的使用,以及面试结合项目问到的问题;
  • 对于消息中间件,绝大多数熟悉的是 MQ(IBM公司出品),这是目前使用最广泛的中间件产品。还有两个也比较流行,他们是JMS和RV。JMS即JAVA消息服务(Java Message Service)应用程序接口是一个JAVA平台中关于面向消息...
  • 消息中间件已经成为互联网企业应用系统内部通信的核心手段,是目前企业内主流标配技术,它具有解耦、异步、削峰、签收、事务、流量控制、最终一致性等一系列高性能架构所需功能。当前使用较多的消息中间件有RabbitMQ...
  • 设计的消息中间件分为两部分:节点端消息中间件和服务器端消息中间件。节点端消息中间件分三层:消息管理层、消息处理层、消息收发层。消息管理层是整个消息中间件的核心,主要负责消息队列管理、消息订阅管理、系统...
  • 维基百科对消息中间件的定义是“Message-orientedMiddlewareissoftwareinfrastructurefocusedonsendingandreceivingmessagesbetweendistributedsystem。”分布式系统中实现消息发送和接受的基础设施。随着企业信息化...
  • 中间件技术 实验三 消息中间件应用开发: - CSDN博客 https://blog.csdn.net/lly1122334/article/details/80139790
  • 消息中间件面试题.zip

    2020-06-29 13:48:43
    对面试高级java工程师中可能会遇到的一些关于消息中间件的问题进行了整理,包括rabbitmq,kafka
  • Java消息中间件

    2018-03-25 22:27:50
    Java消息中间件,activemq的学习,历程。。。。。。。
  • 提出了一个基于消息中间件实现中间层的结构框架,能够以较少的花费实现一个分布式查询系统。中间层各个业务组件利用消息中间件通信,屏蔽了网络复杂性,实现异构平台的互操作,利用持久队列可以确保通信的可靠性,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 167,881
精华内容 67,152
关键字:

消息中间件

友情链接: _jsh.rar