消息队列
文章平均质量分 94
介绍主流消息队列技术:RabbitMQ、RocketMQ、Kafka
邋遢的流浪剑客
成长中的基础架构攻城狮
展开
-
Kafka复习(二):控制器、Kafka副本机制、为什么Kafka不支持主从读写分离、高水位和Leader Epoch、Kafka重平衡
四、控制器控制器组件(Controller)主要作用是在ZooKeeper的帮助下管理和协调整个Kafka集群。集群中任意一台Broker都能充当控制器角色,在运行过程中,只能有一个Broker成为控制器。控制器是重度依赖ZooKeeper的1、控制器的选举Broker在启动时,会尝试去ZooKeeper中创建/controller临时节点,第一个成功创建/controller临时节点的Broker会被指定为控制器ZooKeeper中还有一个与控制器有关的持久节点/controller_epoch,原创 2021-07-07 08:06:35 · 905 阅读 · 2 评论 -
Kafka复习(一):基本概念、生产者分区策略、生产者实现原理、消费者组、位移主题、重平衡、消费者分区分配策略
一、基本概念1、Producer+Consumer+BrokerProducer(生产者)将消息发送到Broker,Broker将收到的消息存储到磁盘中,而Consumer(消费者)负责从Broker订阅并消费消息,Consumer使用拉(Pull)模式从服务端拉取消息ZooKeeper是负责集群元数据的管理、控制器的选举2、Topic+Partition在Kafka中,发布订阅的对象是主题(Topic),生产者负责将消息发送到特定的主题(每一条消息都要指定一个主题),而消费者负责订阅主题并进行原创 2021-06-27 21:35:31 · 1252 阅读 · 2 评论 -
消息队列热点问题:确保消息可靠性、处理消费过程中的重复消息、处理消息积压、利用事务消息实现分布式事务
一、如何确保消息不丢失?1、检测消息丢失的方法可以利用消息队列的有序性来验证是否有消息丢失。在Producer端给每个发出的消息附加一个连续递增的序号,然后在Consumer端来检查这个序号的连续性。如果没有消息丢失,Consumer收到消息的序号必然是连续递增的,如果检测到序号不连续,那就是丢消息了。还可以通过缺失的序号来确定丢失的是哪条消息,方便进一步排查原因大多数消息队列的 客户端都支...原创 2019-08-07 22:21:36 · 2791 阅读 · 3 评论 -
Zookeeper在Kafka中的作用
Kafka主要使用ZooKeeper来保存它的元数据、监控Broker和分区的存活状态,并利用ZooKeeper来进行选举一、Kafka在ZooKeeper中保存了哪些信息?上图中圆角的矩形是临时节点,直角矩形是持久化节点左侧这棵树保存的是Kafka的Broker信息,/brokers/ids/[0...N],每个临时节点对应着一个在线的Broker,Broker启动后会创建一个临时节点,...原创 2019-09-19 07:00:41 · 2330 阅读 · 0 评论 -
Kafka详解(五):Kafka知识点补充(消费滞后量、为什么Kafka不支持主从读写分离、Kafka重要的集群参数配置、Kafka生产者分区策略)
九、Kafka知识点补充1、消费滞后量(Lag)在没有引入事务的情况下,对于每个分区而言,它的Lag等于HW-ConsumerOffset(当前的消费位移)的值在引入事务的情况下,如果消费者客户端的isolation.level参数配置为read_uncommitted(默认),那么Log的计算方式不受影响;如果这个参数配置为read_committed,那么就要引入LSO来进行计算了...原创 2019-05-28 08:56:34 · 2562 阅读 · 0 评论 -
Kafka详解(四):Kafka副本剖析、可靠性分析
八、可靠性探究1、副本剖析副本是相对于分区而言的,即副本是特性分区的副本一个分区中包含一个或多个副本,其中一个为leader副本,其余为follower副本,各个副本位于不同的broker节点中。只有leader副本对外提供服务,follower副本只负责数据同步分区中的所有副本统称为AR,而ISR是指与leader副本保持同步状态的副本(包括leader)集合,OSR是指与leader...原创 2019-05-27 10:34:56 · 1259 阅读 · 1 评论 -
Kafka详解(三):服务端与客户端详解(时间轮、延时操作、控制器、分区分配策略、再均衡、事务)
六、深入服务端1、协议设计Kafka自定义了一组基于TCP的二进制协议,只要遵守这组协议的格式,就可以向Kafka发送消息,也可以从中拉取消息。在Kafka2.0.0中,一共包含了43种协议类型,每种协议类型都有对应的请求和响应,它们都遵循特定的协议模式。每种类型的Rquest都包含相同结构的协议请求头和不同结构的协议请求体协议请求头中包含4个域:api_key、api_version、c...原创 2019-05-25 17:40:31 · 3436 阅读 · 0 评论 -
Kafka详解(二):主题与分区、日志存储(KafkaAdminClient、优先副本的选举、分区重分配、日志清理、页缓存、零拷贝)
四、主题与分区1、主题的管理可以通过kafka-topics.sh脚本来执行创建主题、查看主题信息、修改主题和删除主题等操作,这个脚本位于$KAFKA_HOME/bin/目录下1)、创建主题如果broker端配置参数auto.create.topics.enable设置为true(默认值为true),那么当生产者向一个尚未创建的主题发送消息时,会自动创建一个分区数为num.partitio...原创 2019-05-23 20:18:31 · 2654 阅读 · 0 评论 -
Kafka详解(一):Kafka基本概念、集群搭建、生产者与消费者
一、初始Kafka1、基本概念一个典型的Kafka体系架构包括若干Producer、若干Broker、若干Consumer以及一个ZooKeeper集群。其中ZooKeeper是Kafka用来负责集群元数据的管理、控制器的选举等操作的。Producer将消息发送到Broker,Broker负责将收到的消息存储到磁盘中,而Consumer负责从Broker订阅并消费消息Kafka中的消息以主...原创 2019-05-21 21:52:36 · 1921 阅读 · 0 评论 -
RabbitMQ详解(七):RabbitMQ知识点补充(RPC实现)
十、RabbitMQ知识点补充1、RPC实现1)、实现思路1)当客户端启动时,创建一个匿名的回调队列2)客户单为RPC请求设置2个属性:replyTo用来告知RPC服务端回复请求时的目的队列,即回调队列;correlationId用来标记一个请求3)请求被发送到rpc_queue队列中4)RPC服务端监听rpc_queue队列中的请求,当请求到来时,服务端会处理并且把带有结果的消息发...原创 2019-06-21 19:50:50 · 413 阅读 · 0 评论 -
RabbitMQ详解(六):RabbitMQ延迟队列插件、消息可靠性保障、消费端幂等性保障、批量消息、顺序消息
九、RabbitMQ扩展1、RabbitMQ延迟队列插件1)、下载插件下载地址:https://www.rabbitmq.com/community-plugins.html选择相应的版本点击下载下载的是.zip的安装包,下载完之后需要手动解压并上传到Linux服务器中2)、安装插件拷贝插件到Docker:[root@localhost plugins]# lsrabbitmq...原创 2019-05-05 18:44:00 · 3769 阅读 · 0 评论 -
RabbitMQ详解(五):RabbitMQ整合Spring AMQP、SpringBoot、Spring Cloud Stream
八、RabbitMQ整合篇1、RabbitMQ整合Spring AMQP详解1)、RabbitAdminRabbitAdmin类可以很好的操作RabbitMQ,在Spring中直接进行注入即可autoStartup必须要设置为true,否则Spring容器不会加载RabbitAdmin类RabbitAdmin底层实现就是从Spring容器中获取Exchange、Binding、Rout...原创 2019-05-05 15:34:46 · 2982 阅读 · 0 评论 -
RabbitMQ详解(四):RabbitMQ集群默认模式、使用Docker搭建RabbitMQ集群、镜像队列
七、RabbitMQ集群1、默认模式RabbitMQ集群允许消费者和生产者在RabbitMQ单个节点崩溃的情况下继续运行,它可以通过添加更多的节点来线性地扩展消息通信的吞吐量。当失去一个RabbitMQ节点时,客户端能够重新连接到集群中的任何其他节点并继续生产或者消费RabbitMQ集群不能保证消息的万无一失,即使将消息、队列、交换器等都设置为可持久化,生产端和消费端都正确地使用了确认方式,...原创 2019-05-03 16:20:37 · 5082 阅读 · 0 评论 -
RabbitMQ详解(三):存储机制、流控
六、RabbitMQ高阶1、存储机制不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。持久化的消息在到达队列时就被写入磁盘,并且如果可以,持久化的消息也会在内存中保存一份备份,这样可以提高一定的性能,当内存吃紧的时候会从内存中清除。非持久化的消息一般只保存在内存中,在内存吃紧的时候会被换入到磁盘中,以节省内存空间。这两种类型的落盘处理都在RabbitMQ的持久层中完成持久层是一个逻辑上...原创 2019-05-02 20:16:18 · 2953 阅读 · 0 评论 -
RabbitMQ详解(二):交换机属性、队列属性、持久化、实现发送方确认机制
五、RabbitMQ进阶1、交换机属性详解以DirectExchange为例: @Bean DirectExchange directExchange() { Map<String, Object> map = new HashMap<>(); //将exchange交换机设置为备份交换机 map.put(...原创 2019-04-30 19:33:28 · 2661 阅读 · 1 评论 -
RabbitMQ详解(一):基本概念、安装、整合SpringBoot
一、RabbitMQ简介1、什么是消息中间件消息队列中间件是指利用高效可靠的消息传输机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成消息队列一般有两种传递模式:点对点模式和发布/订阅模式。点对点是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。发布订阅模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题,主...原创 2019-04-29 15:24:20 · 767 阅读 · 0 评论