kafka大白话入门

关键词:

  1. 订阅-发布系统:类比微信公众号
  2. 发消息的演进
  3. kafka的一些概念

1.订阅发布系统

2. 发消息的演进

一对一:

A <--> B 的通信,只有一条通信链路

image

多对多:

3*3的通信,会产生9条通信链路

image

当有很多人通信的时候:

N*N条通信链路,此时链路网络会特别复杂臃肿,而且会有很多已经发过的消息重复发送,不能复用。

image

是时候了,进行升级:加一层,kafka来了

往中间加一层,由他来接收和转发,这个其实就是kafka;他可以接收**生产者**发送的方框、心性、圆圈类的**消息**, **消费者**可以从里面取出自己想要的信息。

image

几个问题引出的kafka概念

1. 生产者、消费者、消息

2. 不同的消费者想要的消息类别不一样怎么办? (topic主题)

image

  • 这里分开主题后,就能区分消费者需要哪类消息了

3.一个主题可能包含多个分区

  • 然后引入partition(分区)的概念,分区可以分布在多个服务器上,这样一个主题就可以分布在多个服务器上了,就不再局限于单个服务器了
  • 分区的好处还有提高消费方的吞吐量!
    image

4.生产者怎么知道消息发往哪个分区呢?

image

引出几个新的概念:键、分区器;(类似于key和哈希函数)
  • 那么一条消息可能包含以下的内容
    image

5.消费者怎么读取数据呢?

答:根据偏移量,比如消费者说:我要topic主题为圆圈的partition 0分区的第2个消息
image

  • 偏移量:也就是第几个
  • 偏移量在写入的时候就已经定好了
  • 一个分区里,每个消息的偏移量是唯一的
  • 消费者只能顺序读取:比如消费者要partition 0 的第4个消息,但他还没读第3个,那就不允许

6.broker:一个独立的kafka服务器

一个独立的kafka服务器就是broker,一个broker里有多个主题,每个主题可能有多个分区。
image

7. Kafka集群:多个broker组成

image

  • 多个broker组成kafka集群。
  • broker中还要有个controler的角色(nameserver),负责:分区该分配给哪个broker、监控哪个broker死掉。
posted @ 2021-06-25 11:46  细雨骑驴入剑门  阅读(176)  评论(0编辑  收藏  举报