码迷,mamicode.com
首页 > 其他好文 > 详细

Kafka入门(一)-基础概念

时间:2021-07-01 17:05:23      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:value   ESS   apache   地方   利用   https   ack   ref   通过   

https://kafka.apachecn.org/intro.html

一、kafka能做什么?

  1. 构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue)
  2. 构建实时流式应用程序,对这些流数据进行转换或者影响。 (就是流处理,通过kafka stream topic和topic之间内部进行变化)
  3. 以上两点我都看不懂,自己理解为,假如在一个业务系统中,有大量的数据库插入操作,我们将数据暂不插入数据库,而是先利用kafka,放在流中,等到数据达到一定量级,批量插入数据库,减轻数据库的访问次数,来减小数据库的压力。

二、kafka数据怎么存储

topic主题:提供一串流式的记录

Topic 就是数据主题,是数据记录发布的地方,可以用来区分业务系统。Kafka中的Topics总是多订阅者模式,一个topic可以拥有一个或者多个消费者来订阅它的数据。

每个partition都是有序且顺序不可变的记录集,并且不断地追加到结构化的commit log文件。partition中的每一个记录都会分配一个id号来表示顺序,我们称之为offset,offset用来唯一的标识partition中每一条记录(也就是说每个topic带多个分区partition,而partition则是用来记录在分区上的操作)。

对于每一个topic, Kafka集群都会维持一个分区日志,如下所示:

技术图片

 

 

 三、kafka每条记录的数据结构是什么样?

每条记录中包含一个key,一个value和一个timestamp(时间戳),以json格式来表示如下(但底层并不是一个json字符串,此处只是为了展示理解):

{
    "record":{
        "key":"abc",
        "value":"this is value",
        "timestamp":1609434061
    }
}

四、kafka四个核心api

The Producer API 允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic(类似于插入数据到数据库,代码中调用insert等操作)。

The Consumer API 允许一个应用程序订阅一个或多个 topic ,并且对发布给他们的流式数据进行处理(类似于在数据库中插入sql)。

The Streams API 允许一个应用程序作为一个流处理器,消费一个或者多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的转换(类似于先在topic之间处理数据,此时还未将数据传到流中,也未存数据库)。

The Connector API 允许构建并运行可重用的生产者或者消费者,将Kafka topics连接到已存在的应用程序或者数据系统。比如,连接到一个关系型数据库,捕捉表(table)的所有变更内容。

五、生产者Producer

生产者可以将数据发布到所选择的topic(主题)中。生产者负责将记录分配到topic的哪一个 partition(分区)中。

六、消费者Consumer

消费者使用一个 消费组 名称来进行标识,发布到topic中的每条记录被分配给订阅消费组中的一个消费者实例.消费者实例可以分布在多个进程中或者多个机器上。(解释:记录P0,P1,P2,P3会被分配给两个消费者组A的一个实例和B的一个实例)

如果所有的消费者实例在同一消费组中,消息记录会负载平衡到每一个消费者实例。(解释:假设A不存在,那么四个记录P0,1,2,3会被负载均衡的给C3,4,5,6四个消费者)

如果所有的消费者实例在不同的消费组中,每条消息记录会广播到所有的消费者进程。(解释:假设Server2不存在,因为有A和B两个消费者组,所以P0会被发给A一个实例,B的一个实例,P3同理,会被发给A一个实例,B的一个实例)

技术图片

 

Kafka入门(一)-基础概念

标签:value   ESS   apache   地方   利用   https   ack   ref   通过   

原文地址:https://www.cnblogs.com/tracydzf/p/14958021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!