kafka大白话入门
关键词:
- 订阅-发布系统:类比微信公众号
- 发消息的演进
- kafka的一些概念
1.订阅发布系统
2. 发消息的演进
一对一:
A <--> B 的通信,只有一条通信链路
多对多:
3*3的通信,会产生9条通信链路
当有很多人通信的时候:
N*N条通信链路,此时链路网络会特别复杂臃肿,而且会有很多已经发过的消息重复发送,不能复用。
是时候了,进行升级:加一层,kafka来了
往中间加一层,由他来接收和转发,这个其实就是kafka;他可以接收**生产者**发送的方框、心性、圆圈类的**消息**, **消费者**可以从里面取出自己想要的信息。
几个问题引出的kafka概念
1. 生产者、消费者、消息
2. 不同的消费者想要的消息类别不一样怎么办? (topic主题)
- 这里分开主题后,就能区分消费者需要哪类消息了
3.一个主题可能包含多个分区
- 然后引入partition(分区)的概念,分区可以分布在多个服务器上,这样一个主题就可以分布在多个服务器上了,就不再局限于单个服务器了。
- 分区的好处还有提高消费方的吞吐量!
4.生产者怎么知道消息发往哪个分区呢?
引出几个新的概念:键、分区器;(类似于key和哈希函数)
- 那么一条消息可能包含以下的内容
5.消费者怎么读取数据呢?
答:根据偏移量,比如消费者说:我要topic主题为圆圈的partition 0分区的第2个消息
- 偏移量:也就是第几个
- 偏移量在写入的时候就已经定好了
- 一个分区里,每个消息的偏移量是唯一的
- 消费者只能顺序读取:比如消费者要partition 0 的第4个消息,但他还没读第3个,那就不允许
6.broker:一个独立的kafka服务器
一个独立的kafka服务器就是broker,一个broker里有多个主题,每个主题可能有多个分区。
7. Kafka集群:多个broker组成
- 多个broker组成kafka集群。
- broker中还要有个controler的角色(nameserver),负责:分区该分配给哪个broker、监控哪个broker死掉。