黑马头条 Kafka

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 黑马头条 Kafka

参考文章:

【黑马头条之kafka及异步通知文章上下架】_黑马头条项目使用kafka的作用是什么-CSDN博客

黑马头条使用Kafka是为了实现文章管理端和APP端的文章状态(已发布、或点赞等数据量大的操作)进行及时性传递。

1. 消息中间件分类

2. Kafka安装

docker pull zookeeper:3.4.14
docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14
 
 
docker pull wurstmeister/kafka:2.12-2.3.1
 
docker run -d --name kafka \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.200.130 \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.200.130:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.200.130:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
--net=host wurstmeister/kafka:2.12-2.3.1
 

3. Kafka入门

设置多个组 可以满足一对多

4. Kafka分区

5. Kafka高可用设计

6. Kafka生产者

7. spring boot 集成kafka

在yml中同时配置序列化和反序列化(序列化在Java中,简单理解就是将对象转换为字节流,反序列化则相反,将字节流转化为Java对象)

8. Kafka的一些问题记录

8.1. kakfa的同步和异步有啥区别

同步会确认服务器的确认,确认完才能发送消息,异步则不需要!

在Apache Kafka中,同步(Synchronous)和异步(Asynchronous)通常是指生产者(Producer)发送消息到Kafka集群的方式。下面是它们的区别:

  1. 同步发送(Synchronous Sending):
  • 在同步发送中,生产者发送消息后会等待服务器的确认(acknowledgment)。
  • 生产者会等待直到收到对消息的确认,以确保消息已经成功写入Kafka集群的指定分区。
  • 这种方式可以提供更高的可靠性,因为生产者会等待直到Kafka确认接收到消息并将其写入至少一个分区。但同时,它可能会引入一些延迟,因为生产者需要等待确认。
  1. 异步发送(Asynchronous Sending):
  • 在异步发送中,生产者发送消息后不会等待服务器的确认,而是继续发送下一批消息。
  • 这种方式可以提供更高的吞吐量,因为生产者可以继续发送新消息而不必等待每个消息的确认。
  • 不过,这也意味着生产者不能立即得知消息是否成功写入Kafka。如果发生错误,可能需要通过回调函数或其他方式来处理。

选择同步还是异步发送取决于应用程序的需求和性能要求。同步发送通常用于对数据可靠性有更高要求的情况,而异步发送则适用于对延迟和吞吐量有更高要求的情况。在异步发送中,生产者可能需要实现一些方式来处理潜在的错误和重试机制,以确保消息最终被成功写入。

8.2. Kafka的分区,主题有啥区别

分区是物理上的,主题是逻辑上的,两者其实属于同一纬度,是人们为了更好的区分。

在Apache Kafka中,分区(Partition)和主题(Topic)是两个核心的概念,它们在消息传递和存储中起到关键作用。

主题(Topic):

主题是消息发布和订阅的逻辑容器。它是一种逻辑概念,用于组织和分类消息。你可以将主题看作是消息的分类或主题的命名标识符。

生产者将消息发送到特定的主题,而消费者则从特定的主题订阅消息。主题可以有多个订阅者,允许多个消费者独立地消费同一主题的消息。

主题可以被配置为拥有多个分区,以便实现水平扩展和提高并行性。

分区(Partition):

分区是主题的物理子集,每个分区是一个有序且不可变的消息序列。每个消息都属于一个特定的分区。

分区允许Kafka在集群中并行处理和存储消息。它们是Kafka实现高吞吐量和水平扩展性的关键因素之一。

每个分区在物理上存储在不同的地方,并且可以在不同的机器上。这有助于分散负载和提高容错性。

消费者可以独立地从每个分区读取消息,这提高了并发性。

关键区别:


主题(Topic)是逻辑概念,用于组织和分类消息;而分区(Partition)是主题的物理子集,用于实现水平扩展和并行处理。

主题可以包含一个或多个分区,每个分区存储特定范围的消息。

消费者订阅主题,但实际上消费者是从分区中读取消息的。

总体而言,主题提供了逻辑上的组织和分类,而分区则允许在分布式环境中高效地存储和处理消息。


目录
相关文章
|
1月前
|
消息中间件 存储 Kafka
Kafka技术第一课
Kafka技术第一课
18 0
|
9月前
|
消息中间件 程序员 Apache
阿里RocketMQ创始人首次分享出这份RocketMQ技术内幕神级架构手册
RocketMQ的发展史? RocketMQ的开源正是源于对这种开源文化的认同,开放是为了更好的协同创新,并将这一技术推向新的高度。在经历了阿里巴巴集团内部多年“双11”交易核心链路工业级场景在验证,2016年11月,团队将RocketMQ捐献给全球享有盛誉的Apache软件基金会正式质为孵化项目。 至此,RocketMQ开启了迈向全球顶级开源软件的新征程。
|
消息中间件 存储 数据可视化
💖10分钟认识RocketMQ!想进阿里连这个都不会?1️⃣💖
MQ(Message Queue)是一种跨进程的通信机制,用于传递消息。通俗点说,就是一个先进先出的数据结构。有点像队列。
251 0
💖10分钟认识RocketMQ!想进阿里连这个都不会?1️⃣💖
|
消息中间件 存储 运维
RocketMQ在搜狐的创新实践
大多数的视频各部门中使用过的消息中间件,包括有 RedisMQ、ActiveMQ、RocketMQ、Kafka 等,本文将选取几个典型的业务介绍一下其使用场景及问题。
334 0
RocketMQ在搜狐的创新实践
|
消息中间件 监控 Cloud Native
RocketMQ 在网易云音乐的实践
最佳实践丨网易云音乐线上场景众多,比如直播、评论、广告等各个业务线都会有消息场景,一起来看看 RocketMQ 在云音乐的落地实战经验分享吧~
231 0
RocketMQ 在网易云音乐的实践
|
消息中间件 存储 监控
4.图灵学院-----阿里/京东/滴滴/美团整理----高频MQ消息队列篇
4.图灵学院-----阿里/京东/滴滴/美团整理----高频MQ消息队列篇
213 0
4.图灵学院-----阿里/京东/滴滴/美团整理----高频MQ消息队列篇
|
消息中间件 Apache RocketMQ
RocketMQ Summit 2022 案例征集中!
日前,优秀案例征集通道已开放!定制礼品、Cherry 键盘等丰厚礼品等您来拿!更有现场授奖,荣誉与奖牌向您一齐奔赴而来!
RocketMQ Summit 2022 案例征集中!
|
消息中间件 SQL 编解码
💖10分钟认识RocketMQ!想进阿里连这个都不会?2️⃣💖
消费消息的步骤: ​ 1. 创建消息消费者, 指定消费者所属的组名 2. 指定Nameserver地址 3. 指定消费者订阅的主题和标签 4. 设置回调函数,编写处理消息的方法 5. 启动消息消费者
107 0
💖10分钟认识RocketMQ!想进阿里连这个都不会?2️⃣💖
|
消息中间件 存储 Cloud Native
与顶级互联网公司技术大佬面对面聊聊RocketMQ吧!
随着消息基础架构的云原生化演进,RocketMQ 也开始探索消息领域的后处理场景,以及消息的流式处理和轻计算,帮助用户实现消息的就近计算和分析,并将全面拥抱 Serverless 和 EDA。那么,现在一线大厂在哪些新场景在使用 RocketMQ,社区最近又有新的功能演进?想要了解这些,那就快来参加 Apache RocketMQ MeetUp - 北京站线下活动吧!
457 1
与顶级互联网公司技术大佬面对面聊聊RocketMQ吧!
|
消息中间件 存储 负载均衡
干货推介超详细 Kafka 入门(最佳实践)
干货推介超详细 Kafka 入门(最佳实践)
769 0
干货推介超详细 Kafka 入门(最佳实践)