kafka学习和概览

  kafka也属于MQ范畴,那么它相对于RabbitMQ等优势是什么呢?大概在于其持久化存储和扩展能力,这些点我们可以从它的设计中窥探一二。

  设计还得看官网,时常看看官网,有不同的收获,这么一张图,可以理解其大致设设计

  可以看出,其并没有遵守AMQP协议,没有Exchange,而是在中采用了topic partition,这个就是kafka的设计核心。

  那么producer和consumer如何是如何工作的呢?还是看官网的一段话:

  An initial question we considered is whether consumers should pull data from brokers or brokers should push data to the consumer. In this respect Kafka follows a more traditional design, shared by most messaging systems, where data is pushed to the broker from the producer and pulled from the broker by the consumer.

  简单来说就是,producer推送,consumer拉取,数据默认持久化存储,没有发布订阅模式,取数据的灵活性交给了consumer,由此可以看出,其也非常适合做数仓。

  按照官网教程,我们就可以搭建自己的kafka集群了,下面我们用shell命令创建了一个topic

1
bin/kafka-topics.sh --create --bootstrap-server kafka1:9092 --replication-factor 3 --partitions 4 --topic test

  可以看到,其是分布式部署的,topic存储在zookeeper中,所以在哪个节点上执行命令都是一样的,其一个topic有4个分区,2个副本,所以分区实际上是3*4=12

  kafka还有很多使用细节,是一篇博客所无法覆盖的, 这篇只是一个总览性质的,更多的特性还得我们阅读其他博客并实践。

参考博文:

java-clents操作kafka:https://hanchao.blog.csdn.net/article/details/100043271

kafka工作原理:https://hanchao.blog.csdn.net/article/details/100037633

posted @   懂得了才能做一些改变  阅读(663)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
历史上的今天:
2018-05-17 重装win7,win10,Ubuntu
点击右上角即可分享
微信分享提示