消息中间件概述

技术标签: 消息中间件

消息中间件概述

原文地址

消息中间件概述

中间件

是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。
中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称中间件。

学术界定义

中间件是指网络环境下处于操作系统、数据库等系统软件和应用软件之间的一种起连接作用的分布式软件,主要解决异构网络环境下分布式应用软件的互连与互操作问题,提供标准接口、协议,屏蔽实现细节,提高应用系统易移植性。

消息中间件

关注于数据的发送和接受,利用高效可靠的异步消息传递机制进行平台无关的数据交流,并基于数据通信集成分布式系统。

在这里插入图片描述

为什么需要消息中间件

通过服务调用让其他系统感知事件的发生,系统之间耦合度太高,用户体验不好。
在这里插入图片描述

通过消息中间件可以解耦服务调用。
在这里插入图片描述
生活中的示例:
在这里插入图片描述
在这里插入图片描述

好处:解耦、异步、横向扩展、安全可靠、顺序保证。

常见消息中间件

ActiveMQ

ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。

特性

  1. 多种语言和协议编写客户端。 语言: Java,C,C+ +,C#,Ruby,Perl,Python,PHP。 应用协议:OpenWire,Stomp REST,WS Notification,XMPP,AMQP。
  2. 完全支持JMS1.1和J2EE1.4规范(持久化,XA消息,事务)。
  3. 虚拟主题、组合目的、镜像队列。

RabbitMQ

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

特性

  1. 支持多种客户端,如: Python、Ruby、.NET、Java、JMS.C、 PHP、ActionScript等。
  2. AMQP的完整实现(vhost.Exchange、Binding、Routing Key等)。
  3. 事务支持/发布确认。
  4. 消息持久化。

Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,是一个分布式的、分区的、可靠的分布式日志存储服务。它通过一种独一无二的设计提供了一个消息系统的功能。

特性

  1. 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
  2. 高吞吐量:即使是非常普通的硬件,Kafka也可以支持每秒数百万的消息。
  3. Partition(分区)、Consumer Group(消费组)。

三者的比较
在这里插入图片描述

来源:https://www.jianshu.com/p/7b73430b2246


智能推荐

消息中间| JAVA消息中间件概述

文章目录 什么是中间件? 什么是消息中间件? 什么是Java消息服务(JMS)? 什么是AMQP? JMS与AMQP对比? 几种常见消息中间件 ActiveMQ RabbitMQ Kafka 综合评价 什么是中间件? 中间件(英语:Middleware),又译中间件、中介层,是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,在现代信息技术应...

消息中间件

消息中间件的相关知识 1 概述 消息中间件是指支持与保障分布式应用程序之间同步/异步收发消息的中间件 2 消息中间件的组成 2.1 Broker 消息服务器 2.2 Producer 消息生产者 2.3 Consumer 消息消费者 2.4 Topic 主题 2.5 Queue 队列 2.6 Message 消息体 3 消息中间件传输模式 3.1 点对点模型 使用queue作为通信载体 点对点消息...

消息中间件

消息中间件我理解的就是一个消息分发总线, 中间件是消息队列的一种封装实现,提供了应用程序和API! 消息队列=任务队列更像是一种解决方案,一般都是异步,发布和订阅模型,订阅还可以分成是pull和push! 具体场景为:不用实时响应,任务处理时间较长的地方,比如视频格式转换服务,你视频上传成功就可以提示你可以离开本页面,随时可以回来查看任务处理进度,实际就是一个异步任务处理的场景,有N个订阅者收到消...

消息中间件

通过消息中间件解耦服务调用 消息中间件带来的好处 系统解耦 异步 横向扩展 安全可靠 顺序保证(kafka日志中间件系统) 消息中间件:关注于数据的发送和接受,利用高效可靠的异步消息传递机制集成分布式系统 JMS:java消息服务(java Message Service),java平台中关于面向消息中间件的API,用于在两个应用程序之间,或分布式 系统中发送消息,进行异步通信。 AMQP:(ad...

消息中间件

一、消息中间件基本概念 消息中间件是在消息的传输过程中保存消息(消息传递过程中不能更改)的容器。消息中间件再将消息从它的原中继到它的目标时充当中间人的作用。消息中间件的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,知道可以成功传递为止,当然,消息队列保存消息也是有期限的。   二、消息中间件的特点: 1、采用异步处理模式 消息发送者可以发送一个消息而...

猜你喜欢

消息中间件

什么是消息中间件? 消息中间件是在消息的传输过程中保存消息的容器 消息中间件将消息从源中继(生产者)到目标(消费者)时充当中间人的角色 消息中间件的目的是提供路由并保证消息的传递,如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它为止,当然消息队列保存消息也是有期限的。 消息中间件 Broker 消息中间件有什么特点呢? 异步处理模式 消息发送者发送一个消息而无需等待响应,消息发...

消息中间件

Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能 发表于 2016-04-01   |   作者   以夕     |   分类于 消息中间件   |   引言 分布式系统...

消息中间件

消息中间件 场景 解耦 异步 削峰 系统可用性降低 系统复杂性增加 分类 Kafka ActiveMQ RabbitMQ RocketMQ 重复消费(幂等性) 拿消息做数据库的insert操作: 给消息做一个唯一主键,就算出现重复消费的情况,就会导致主键冲突 拿消息做redis的set的操作: 不用解决,set操作本来就算幂等操作 给消息分配一个全局id,只要消费过该消息,将<id,mess...

消息中间件

什么是消息中间件 消息(Message)是指在应用间传递的数据。可以非常简单,如文本字符串、JSON等,也可以复杂,如内嵌对象。 消息队列中间件(Message Queue Middleware,简称MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。 两种传递模式: 点对点 生产者发送一条消息到queue,只有一个消费者能收到。 queue实现了负...

无意中发现看书也是一种美

2012年4月25日晚,翻翻自己喜欢的一门语言学习书(python参考手册),无意中发现书中夹着之前的明信片(有一次和同事一起去前门邓丽君音乐生活馆留下来的),感觉学习也是一种美!于是乎拍下这不经意的时刻,哈哈!...

问答精选

How to extract beta coefficients for interaction effect in R?

I am examining the interaction between a continuous variable (bloodq) and a categorical variable with three levels (ER, RB, and WB). In order to see how the betas differ across tissue types, I would l...

what is the difference between Flatten() and GlobalAveragePooling2D() in keras

I want to pass the output of ConvLSTM and Conv2D to a Dense Layer in Keras, what is the difference between using global average pooling and flatten Both is working in my case. That both seem to work d...

How to invoke a test step with inputs at runtime from groovy script in SOAP UI?

I am writing a validation groovy script for a test step, intended to test a SOAP Web Service. Now, I want to call the same test step, with different input value from the groovy script. Is it possible?...

Wicket pagestore results wrong page

I have a problem with my web application with wicket. I am using wicket 6.14. I can't say exactly what the problem is, but I can describe the problem. I am using a self written pagestore, which uses h...

Unity load files from outside of resources folder

In unity is it possible to load a resource that is out side of the resources folder. I want the user to be able to set a textAsset variable from a file outside of the Assets directory entirely. You ca...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答