Kafka

 https://juejin.cn/user/1574156381468286  摘要

 

消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实现解耦合的作用。

Kafka 是一个消息系统,是一个集群模式,和HDFS有点像

Kafka里面设计了topic(主题),类似于关系型数据库的表

还有一个概念叫 Partition (分区),分区具体在服务器上面表现起初就是一个目录,一个主题下面有多个分区,这些分区会存储到不同的服务器上面,多个分区多个线程,多个线程并行处理肯定会比单线程好得多

Topic 也是逻辑概念,而 partition 就是分布式存储单元。

注意:

1、分区会有单点故障问题,所以我们会为每个分区设置副本数

2、分区的编号是从0开始的

Producer - 生产者

Consumer - 消费者

Message - 消息

Replica - 副本

Consumer Group - 消费者组

 

 

 

Kafka 的集群架构

每个副本都是有角色之分的,它们会选取一个副本作为 leader,而其余的作为follower

生产者在发送数据的时候,是直接发送到 leader partition 里面,然后follower partition 会去 leader 那里自行同步数据,消费者消费数据的时候,也是从leader那去消费数据的

消费数据时会在代码里面指定一个 group.id,这个 id 代表的是消费组的名字,而且这个 group.id 就算不设置,系统也会默认设置

conf.setProperty("group.id","tellYourDream")

在 kafka 中,不同组可(且只)有唯一的一个消费者去消费同一主题的数据

所以消费者组就是让多个消费者并行消费信息而存在的,而且它们不会消费到同一个消息

因为前面提到过了消费者会直接和leader建立联系,所以它们分别消费了三个leader,所以一个分区不会让消费者组里面的多个消费者去消费,但是在消费者不饱和的情况下,一个消费者是可以去消费多个分区的数据的

 

kafka也是主从式的架构,主节点就叫controller,其余的为从节点,controller是需要和zookeeper 进行配合管理整个kafka集群

此时模拟一个场景,我们创建一个主题(其实就是在zookeeper上/topics/topicA这样创建一个目录而已),kafka会把分区方案生成在这个目录中,此时controller就监听到了这一改变,它会去同步这个目录的元信息,然后同样下放给它的从节点,通过这个方法让整个集群都得知这个分区方案,此时从节点就各自创建好目录等待创建分区副本即可。这也是整个集群的管理机制

 

 

Kafka 优势

顺序写     追加数据是追加到末尾,磁盘顺序写的性能极高

零拷贝      

日志分段存储    Kafka规定了一个分区内的.log文件最大为1G,做这个限制目的是为了方便把.log加载到内存去操作

网络设计    kafka的网络设计和Kafka的调优有关,这也是为什么它能支持高并发的原因

 

如果我们需要对kafka进行增强调优,增加processor并增加线程池里面的处理线程,就可以达到效果。request和response那一块部分其实就是起到了一个缓存的效果,是考虑到processor们生成请求太快,线程数不够不能及时处理的问题。

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值