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

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 @ 2020-05-17 13:20  懂得了才能做一些改变  阅读(658)  评论(0编辑  收藏  举报