随笔分类 - 消息中间件 [Kafka & RabbitMQ]
摘要:kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 一、中间件常识 【1】消息系统分类(两种):1)、Peer-to-Peer:发送到队列中的消息仅仅被一个接收者接收。支持异步 “即发即弃” 的消息传送方式,也支持同步 “请求应答”
阅读全文
摘要:一、消息队列的使用场景 ☞ 以下介绍消息队列在实际应用常用的使用场景。异步处理、应用解耦、流量削锋和消息通讯四个场景。【1】异步处理:场景说明:用户注册后,需要发注册邮件和注册短信。 引入消息队列后架构如下:用户的响应时间=注册信息写入数据库的时间,例如50毫秒。发注册邮箱、发注册短信写入消息队列后
阅读全文
摘要:RabbitMQ 是实现高级消息队列协议(AMQP:Advanced Message Queue Protocol)的开源代理软件,也称为面向消息的中间件。支持多种操作系统、多种编程语言。RabbitMQ 服务器使用 Erlang 语言编写,其集群和故障转移是构建在开放电信平台框架上的。 AMQP
阅读全文
摘要:一、生产者发送消息的步骤 创建一个 ProducerRecord 对象,对象中包含目标主题和要发送的内容。还可以指定键或分区。在发送 ProducerRecord 对象时,生产者要先把键和值对象序列化成字节数组,这样它们才能够在网络上传输。接下来,数据被传给分区器。分区器直接把指定的分区返回。如果
阅读全文
摘要:一个商业化消息队列的性能好坏,其文件存储机制设计是衡量一个消息队列服务技术水平和最关键指标之一。下面将从 Kafka文件存储机制和物理结构角度,分析 Kafka是如何实现高效文件存储,及实际应用效果。Kafka 的基本存储单位是分区。在配置 Kafka 的时候,管理员指定了一个用于存储分区的目录清单
阅读全文
摘要:消费者不需要自行管理 offset(分组+topic+分区),系统通过 broker 将 offset 存放在本地。低版本通过 zk 自行管理。系统自行管理分区和副本情况。消费者断线后会自动根据上一次记录的 offset 去获取数据(默认一分钟更新一次 offset),同一个分组中的客户不能同时消费
阅读全文
摘要:更多内容,前往 IT-BLOG 【需求】:生产者发送数据至 kafka 序列化使用 Avro,消费者通过 Avro 进行反序列化,并将数据通过 MyBatisPlus 存入数据库。 一、环境介绍 【1】Apache Avro 1.8;【2】Spring Kafka 1.2;【3】Spring Boo
阅读全文
摘要:更多内容,前往 IT-BLOG 主题操作 使用 kafka-topics.sh 工具可以执行主题的大部分操作。可以用它创建、修改、删除和查看集群里的主题。要使用该工具的全部功能,需要通过 --zookeeper参数提供 Zookeeper的连接字符串。 kafka 的大部分命令行工具直接操作 Zoo
阅读全文
摘要:更多内容,前往 IT-BLOG 无论 Kafka 作为 MQ 也好,还是作为存储层也罢,无非就是两个功能,一是 Producer 生产的数据存到 Broker,二是 Consumer 从 Broker 读取数据。那 Kafka 的快也就体现在读写两个方面了,下面我们就聊聊 Kafka 快的原因。 一
阅读全文
摘要:更多内容,前往 IT-BLOG 单个 kafka服务器足以满足本地开发或 POC要求,使用集群的最大好处是可以跨服务器进行负载均衡,再则就是可以使用复制功能来避免因单点故障造成的数据丢失。在维护 Kafka 或底层系统时,使用集群可以确保为客户端提供高可用性。 需要多少个 Broker 一个 k
阅读全文
摘要:更多内容,前往 IT-BLOG 消息送达语义是消息系统中一个常见的问题,主要包含三种语义:【1】At most once:消息发送或消费至多一次;【2】At least once:消息发送或消费至少一次;【3】Exactly once:消息恰好只发送一次或只消费一次;下面分别从生产者和消费者的角度来
阅读全文
摘要:更多内容,前往 IT-BLOG HW(High Watermark):俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个 offset 之前的消息。分区 ISR 集合中的每个副本都会维护自身的 LEO(Log End Offset):俗称日志末端位移,而 ISR 集合中最
阅读全文
摘要:更多内容,前往 IT-BLOG leader epoch 代表 Leader 的纪元信息(epoch),初始值为0。每当 Leader 变更一次,leader epoch 的值就会加1,相当于为 Leader 增设了一个版本号。每个副本中还会增设一个矢量 <LeaderEpoch >= StartO
阅读全文
摘要:更多内容,前往 IT-BLOG 在了解 Kafka的事务之前,先说一下 Kafka中幂等和事务(Kafka 0.11.0.0版本引入的两个特性)以此来实现 Exactly once(精确一次)了解更多链接。 幂等:生产者在进行重试的时候有可能会重复写入消息,而使用 Kafka的幂等性功能之后就可以避
阅读全文
摘要:更多内容,访问 IT-BLOG Kafka中实现延迟队列 在发送延时消息的时候并不是先投递到要发送的真实主题(real_topic)中,而是先投递到一些 Kafka 内部的主题(delay_topic)中,这些内部主题对用户不可见,然后通过一个自定义的服务拉取这些内部主题中的消息,并将满足条件的消息
阅读全文
摘要:更多内容,前往 IT-BLOG 常用的 MQ组件有 Kafka、RabbitMQ、RocketMQ、ActiveMQ、ZeroMQ、MetaMQ。当然 Kafka的功能更加强大,其它 MQ都有自己的特点和优势,如下: 特性 Kafka RabbitMQ RocketMQ ActiveMQ 开发语言
阅读全文