常见消息中间件
消息中间件是服务间传递消息的中间件,用于服务之间通信的。服务间通信可以分为两大类,一类是机器内的服务通信,一类是不同机器间的服务通信。
1. 机器内服务通信
项目间的服务通信,即进程或线程间的通信。这是一个面试或笔试经常会考的问题。进程间通信的常见方法有:管道、共享内存、信号量、消息队列等。
- 管道:分为匿名管道和命名管道,其中匿名管道只适用于父子进程间的通信,命名管道允许任意进程间的通信。
- 共享内存:内存分为用户态和内核态,内核态的内存是各个模块共享的,所以可以将消息写入高端内存进行共享
- 信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。
- 消息队列:内核内存在消息链表,产生消息后内核会自动调用对应的回调函数进行处理,进程可以向内核注册自己的消息,从而进行消息共享
2. 机器间的服务通信
机器间的服务通信相对复杂,一般使用常见的开源项目。比如RabbitMq,Redis,ZeroMQ,ActiveMq,Kafka,RoketMQ等。
2.1 RabbitMq
RabbitMq是一个非常重量级的消息中间件,支持的协议非常丰富,包括http、SMTP、AMQP等等,因此非常重量级。RabbitMq实现了broker架构,因此对负载均衡支持比较好,同时也实现了数据的持久化,在消息的可靠性,数据一致性,架构稳定性方面表现非常好。商业应用比较多。但是性能和吞吐量比较差。
2.2 Redis
Redis是一个轻量级的KV数据存储系统,也支持轻量级的MQ,但redis由于是单线程服务,在数据量较小的情况下,性能比RabbitMq要好,但是数据量大的时候性能较差。
2.3 ZeroMq
号称吞吐量最大,最快的消息队列。ZeroMq完全采用内存存储消息内容,非常适用于对吞吐量要求非常高的场景。ZeroMq非常独特,没有自己单独的服务器,使用的应用程序就是他的服务器。使用的时候只需要引入ZeroMq包,就可以发送消息,非常简单。缺点也很明显,由于不支持数据持久化,因此宕机后消息很容易丢失。Storm0.8以前的版本是使用ZeroMq。
2.4 ActiveMq
和ZeroMq类似,使用非常简单,支持消息代理和P2P模式,介于Rabbit和Zero之间。
2.4 Kafka
Kafka被称为下一代的消息中间件。和上面几位相比,优势非常明显。Kafka吞吐量非常高,支持消息持久化,负载均衡和灾备做的也很出色,而且对Java的支持最好。下面会详细介绍。
2.5 RoketMq
阿里最新的消息中间件,Metaq 3.0版本。经过查询,是阿里的开发看了Kafka的设计文档后,重新开发出来的,据说架构一模一样,唯一的不同是Kafka使用Scala编写,Metaq是使用Java编写。
相关推荐
Kafka 使用 **Consumer Group** 的概念,同一个 Group 中的 Consumers 会协作消费 Topic 中的消息,保证消息的唯一消费。每个 Consumer 在 Commit Log 中维护自己的消费进度,即 Offset。由于 Consumers 自主管理 ...
Kafka 面试专题 消息中间件 Kafka 是一种高性能、可扩展、可靠的消息中间件,常用于大数据处理、实时数据处理和日志聚合等场景。下面是 Kafka 的一些核心概念和设计理念: Kafka 架构 Kafka 的架构可以分为三部分...
ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
消息中间件是现代分布式系统中不可或缺的组件,它在...通过以上内容的学习和实践,你将能够熟练掌握消息中间件的基本概念、使用技巧和最佳实践,从而在实际工作中灵活运用,解决复杂问题,成为一名消息中间件实战高手。
Kafka是一款高性能的消息中间件,由LinkedIn开发并开源,现在是Apache软件基金会的顶级项目。它最初设计的目标是处理实时的流数据,但随着时间的发展,Kafka已经成为广泛应用于日志收集、监控数据聚合、消息传递等...
1. 消息:在消息中间件中,消息是数据传输的基本单元,包含了发送者想要传递的信息。 2. 队列(Queue):消息通常会被存储在一个或多个队列中,等待被消费者处理。队列遵循先进先出(FIFO)原则。 3. 主题(Topic)...
KafkaMiddleWare利用kafka开发的一个中间件,其可以根据配置创建topic,向指定的topic中发送消息以及消费消息。其可打包供生产端和消费端调用。使用方式:首先按DataQualityMessage类生产数据,然后可按照测试文件中...
kafka消息中间件
Kafka2.12消息中间件+安装包
Kafka技术,消息队列相关技术,Java中间件技术全套教学视频
### Kafka消息中间件面试专题知识点解析 #### 一、Kafka的设计原理与架构 Kafka是一种分布式的流处理平台,其核心设计围绕着**主题**(topic)展开。一个主题可以视为一条或多条消息的集合。Kafka将消息的发布者称为*...
**Kafka消息中间件课程资料概述** Kafka是一款高性能、分布式的实时消息队列系统,由LinkedIn开发并开源,现在是Apache软件基金会的顶级项目。Kafka被设计为能够处理大量的实时数据,常用于大数据处理、日志收集、...
消息中间件kafka 进行消息的分发和接收示例 应用中包含分通道发送和多线程接收
3. **定义生产者**:创建一个Kafka消息生产者类,使用Spring Cloud Stream提供的API来发送消息到指定的topic。 4. **测试发送**:编写测试代码来验证生产者是否能成功地将消息发送到Kafka服务器上。 通过以上步骤,...
本书《分布式消息中间件实践_倪炜(著)》深入探讨了四种主流的消息队列(Message Queue,MQ)系统:RabbitMQ、ActiveMQ、Kafka以及RocketMQ,旨在帮助读者理解和掌握这些工具的使用方法。 首先,RabbitMQ是一种基于...
Kafka是一款高性能、分布式的消息中间件,最初由LinkedIn开发,后成为Apache顶级项目。它主要用于处理实时数据流,提供高吞吐量的发布订阅服务,同时也支持离线数据处理。在本篇文章中,我们将深入探讨Kafka的基础...
Kafka 消息中间件面试专题 Kafka 设计理念: Kafka 将消息以 topic 为单位进行归纳, producers 通过网络将消息发送到 Kafka 集群,集群向消费者提供消息。Kafka 以集群的方式运行,可以由一个或多个服务组成,每...
Kafka是一种高性能的分布式消息中间件,主要用于处理实时数据流。它由Apache开发,并使用Scala编写,具有高吞吐量和可扩展性。Kafka借鉴了JMS(Java Message Service)的一些理念,但并未完全遵循其规范,而是创造了...
标题“高吞吐消息中间件 Kafka1”涉及的是Apache Kafka,一个高性能、分布式的消息中间件。Kafka主要用于构建实时数据管道和流应用,确保数据在生产者和消费者之间高效、可靠地传输。以下是对描述和标签中提到的知识...