在我们旅行于数据海洋的途中,如果把 Kafka 比作是一艘承载无数信息航行的快船,前文《Kafka实战漫谈:大数据领域的不败王者》已经讲述了如何搭建起这艘快船,让它在起风的早晨开始了第一次航行 。
但随着大浪的拍打,我们必须让它做好准备 , 以应对那些未知的暴风雨 。
今天,我们来谈谈如何让这艘快船变得更强壮——让它有能力在风急浪高时稳稳地前行 , 不至于让宝贵的数据货物沉入海底 。
在 Kafka 这艘数据游轮载着数据航行时,我们这些开发者——也就是船上的水手来说,Kafka 集群的高可用性、消息消费的一致性和延时队列等都是确保数据航行安全的关键特性 。
所以,拿起你的望远镜 , 让我们来一探 Kafka 高级知识的奥秘吧!
一、背景说到 Kafka,许多人第一反应可能是:噢,一个消息中间件?
是的,但它远不止如此 。Kafka 的力量在于它的可伸缩性、可靠性以及高吞吐 。
很多在业务中使用过 Kafka 的小伙伴肯定知道,搭建起一个高效的 Kafka 集群,就像在你的航船上装备强大的引擎 。
而恰当地处理消息的重复消费与延时,则犹如在粗犷的海浪中找到了平稳的航道 。
(1) 坚不可摧的集群舰队:Kafka 高可用
在高海拔时,Kafka 能够展现它的“高”——高可用 。
集群化部署后,即便是有节点失联 , 系统也能自我修复 。如同海中的舰队,一艘舰船的失事并不意味着整个航线的中断 。
(2) 精确把握所有货物:消费去重
重复消费在消息队列中犹如误投递包裹 。
在 Kafka 的运送数据时,要确保每条消息只被消费一次,我们得有高超的“航海术”——幂等性与事务 。
(3) 总有延时的风浪:延时队列处理
和海底的珍珠一样,每个船上的数据包都有其“价值”,然而在时间的尺度上,它们的价值是变化的 。
所有才有诗人说:人生遇到的每个人,出场顺序真的很重要!这在消息中间件里也同样适用 。
人生没有时光机,但 Kafka 的延时队列有:它不仅可以发送实时消息,还能处理那些需要“重复呈现”的信息 。
二、乘风破浪的Kafka接下来,让我们更深入地探索这艘快船的强大之处,以及如何利用它 。首先,我们搭建一个 Kafka 集群 。
1.创建三个broker我们启动了三个容器,配置都略微不同——记住 , 每艘船都有其独特的身份(broker.id)和自己的泊位(listeners) 。
通过进入 Zookeeper 的客户端检查 Kafka 的状态,就如同站在灯塔上检查舰队——确保每艘船都已就绪并在正确的位置 。
启动三个容器,server.properties 文件分别为:
# 1,2,3broker.id = 3# 49092 , 49093,49094listeners=PLAINTEXT://172.16.30.34:49094
校验是否启动成功,进入 zookeeper , 查看:
# 进入客户端./bin/zkCli.sh# 查看brokerls /brokers/ids
可以看到各自的 ID 都不同 , 说明 3 个节点启动成功了:
文章插图
2. 集群中的副本我们在上篇文章中已经介绍了分区和副本的概念,现在,结合集群中的节点,我们进一步来理解它们 。
有备无患 , 副本就好比是同型船的兄弟,一旦领军的船只(leader)遇难,它们(follower)中的一员就会站出来 , 扛起大旗 。
Kafka 的读写操作都发生在 leader 上 , leader 还负责把数据同步给 foller 。
当 leader 挂了,经过主从选举,从 follower 中选出一个新的 leader 。
在这里,Kafka 的调度能力展露无遗 。
3. 关于集群消费就像团队合作的捕鱼作业,一个 message 可能会被多个消费者(在不同的船上)处理 , 但恰到好处的通信保证了鱼群的精确分配 。
在集群中,我们可以借助以下命令来发送、消费消息:
# 向集群发送消息./kafka-console-producer.sh --broker-list 172.16.30.34:49092,172.16.30.34:49093,172.16.30.34:49094 --topic my-replicated-topic# 消费集群消息./kafka-console-consumer.sh --bootstrap-server 172.16.30.34:49092,172.16.30.34:49093,172.16.30.34:49094 --topic my-replicated-topic# 指定消费组消费集群消息./kafka-console-consumer.sh --bootstrap-server 172.16.30.34:49092,172.16.30.34:49093,172.16.30.34:49094 --from-beginning --consumer-property group.id=testGroup1 --topic my-replicated-topic
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 7k Star,一款开源的 Kafka 管理平台,功能齐全、页面美观!
- 云原生数据库 GaiaDB 架构设计解析:高性能、多级高可用
- 从MySQL看主从架构高可用性实现
- 利用Apache Kafka、Flink和Druid构建实时数据架构
- 解密MongoDB集群管理:构建高可用性数据库架构
- 图解Kafka适用场景,全网最全!
- Kafka有哪些应用场景?你能说上来几个?
- YashanDB数据库主备高可用架构实践
- Kafka:解锁大数据时代的搜索与分析
- 解密Kafka主题的分区策略:提升实时数据处理的关键