kafka的架构分析

整体架构组件

          

  broker

          kafka集群中每个节点都会运行一个kafka进程,这个进程被称为kafka的broker

          broker是会参与leader分区的选举的程序

          每个broker一定是某个分区的leader同时还会充当另外一个分区的follower

   分区

         每一个分区都有自己的副本

         每个分区和分区的副本一定不会同时分配到同一台主机上

         kafka会把一个Topic下的数据分散的存储在多个独立的分区文件中

   副本因子

         指定一个分区文件在kafka集群中有多少个备份副本数量

   Topic

          在kafka中是以Topic的形式来管理kafka中的消息数据

          Topic是一个逻辑队列,不是一个物理存在的物体,它是由多个物理的分区队列组合而成

   消息

         一则消息是由key,value,时间三部分组成

   消息存储

          生产者发送消息的时候指定的是Topic,但是消息具体需要存储在Topic下的哪个分区
          kafka的默认分发策略是由hash(key)%分区数的值 来决定的
             1.可以使相同key的消息可以存储在同一个分区中
             2.可以使消息均匀的分散在各个分区当中

         

      分区恢复

           当主分区节点宕机的时候,此分区便不能再正常写入消息.kafka会在其它副本分区所在的broker进行重新选举,给宕机的分区重新选举一个新的leader.这样该分区便可以重新读写消息

数据生产

    

    

    1.每个Topic下包含一组分区数据

    2.每个分区下的数据是有序而且不可变的队列存储模式

    3.每个分区下的数据会在磁盘上保存一段时间再自动删除,不管数据有没有被消费到.消息数据具有持久性

    

数据消费

       同一个消费组内的消费者只能均分同一topic下的分区
       一个分区分配给了一个消费组内的某个消费者,这个分区就一定不会再对应这个组内的其它消费者。除非这个消费者发生了宕机,这个时候kafka会对这个消费组中的消费者和分区重新进行一次均分

      

      

 Topic运维管理   

创建topic
./kafka-topics.sh --bootstrap-server 192.168.227.152:9092 --create --topic topic01 --partitions 3 --replication-factor 1
--replication-factor 副本因子的参数值不能够超过broker的数量
每个broker占用一个kafka实例节点
表示每个分区数据存储的副本数

查看topic
 ./kafka-topics.sh --bootstrap-server 192.168.227.152:9092 --list
 ./kafka-topics.sh --bootstrap-server 192.168.227.152:9092 --describe --topic topic01

修改topic
./kafka-topics.sh --bootstrap-server 192.168.227.152:9092 --alter --topic topic01 --partitions 4

删除topic
./kafka-topics.sh --bootstrap-server 192.168.227.152:9092 --delete --topic topic01


创建生产者
./kafka-console-producer.sh  --broker-list 192.168.227.152:9092 --topic topic01


创建消费者
./kafka-console-consumer.sh  --broker-list 192.168.227.152:9092 --topic topic01
topic管理
原文地址:https://www.cnblogs.com/yxh168/p/15575527.html