KAFKA

50 阅读3分钟

1.什么是kafka?

        kafka是一个多分区、多副本的分布式消息系统。也是一个分布式流式处理平台,它具备高吞吐、可持久化、可水平扩展、支持流数据处理等多种特点。

三个特点:                                                                                                                          <1>消息队列。                                                                                                                <2>数据流存储平台,并且具备错误容忍。                                                                              <3>数据产生时就对它进行处理。

2.kafka的基本概念?                                                                                                                物理概念or逻辑概念?                                                                                                  Producer:消息和数据的生产者,向Kafka的一个topic发布消息的进程/代码/服务。 Consumer:消息和数据的消费者,订阅数据(Topic)处理其发布的消息进程/代码/服务。 Consumer Group:逻辑概念,对于同一个topic,会广播给不同的group,一个group中,只                                 有一个Consumer可以消费该消息。                                                      Broker:物理概念,Kafka集群中的每个Kafka节点。                                                  Topic:逻辑概念,Kafka消息的类别,对数据进行区分和隔离。                              Partition:物理概念,Kafka数据存储的基本单元。一个Topic数据会被分散存储到多个                         Partition,每个Partition是有序的,kafka会把一个Partition放在一个Broker里面。Replication:同一个Partition可能会有多个Replica(副本),多个Replica之间数据是一样的。Replication Leader:一个Partition的多个Replica上需要一个Leader负责该Partition上与                                         Producer和Consumer交互。                                          ReplicaManager:负责管理当前broker所有分区和副本的信息,处理KakfaController发起的一些请求,副本状态的切换,添加/读取消息等。

延伸概念:                                                                                                            Partition:                                                                                                                        <1>每一个Topic被切分成多个Partitions。                                                                          <2>消费者数目少于或者等于Partition的数目。(每一个消费者消费一个Partitions)      <3>Broker Group中的每一个Broker保存Topic的一个或者多个Partitions。(同一个Partition         不会被多个Broker保存)                                                                                   <4>Consumer Group中的仅有一个Consumer读取Topic的一个或者多个Partitions,并且            是唯一的Consumer。(避免同一个Partition被多个Consumer消费)

Replication:                                                                                                                    <1>当集群中有Broker挂掉的情况,系统可以主动地使Replicas提供服务。                            <2>系统默认设置每个Topic的replication系数是1,可以在创建Topic时单独设置。(节约资源) <3>Replication的基本单位是Topic的Partition。                                                              <4>所有的读和写都从Leader进,Fellowers只是作为备份。                                          <5>Fellower必须能够及时复制Leader的数据。                                                                =<6>增加容错性和可扩展性。

3.kafka特点?                                                                                                                      <1>缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保                             证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下                             游服务就可以按照自己的节奏进行慢慢处理。                                            <2>解耦和扩展性:项目开始时并不能确定具体需求。消息队列可以作为一个接口层,                                           解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展性。    <3>冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费                     到,供多个毫无关联的业务使用。                                                                       <4>健壮性:消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务                       的正常进行。                                                                                                 <5>异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,                           允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息                           就放多少,然后在需要的时候再去处理它们。