Kafka---系统学习

    

               

 

 

 

 

 

 

1、前言

  1.1、发布-订阅消息系统

      1.1.1、消息(数据)发布者(发送者    不会  直接  将   消息  发送给  接收者

          发布者  以  某种方式 消息  进行分类接收者  订阅 消息

          发布-订阅系统   一般都有一个broker消息发布的中心点);

  1.2、Kafka

      1.2.1、Kafka的  数据单元  被称为消息(消息:由   字节数组  组成)

      1.2.2、为了提升效率,消息   被  分批次批次一组消息[属于   同一个 主题、同一个分区])  写入  Kafka

      1.2.3、消息模式

         1.2.4、Kafka消息   以   主题   进行分类

            一个主题 分为  多个  分区

            Kafka消息  以  追加的 方式 写入分区以  先进先出  的顺序读取

      1.2.5、Kafka  通过  分区  实现  数据冗余、伸缩性,分区  可以分布在   不同的Server上

      1.2.6、Kafka客户端

            消息生产者

              a,一个消息   会被  发布到  指定的主题上(分区可以指定   ,也  可以由分区器 均衡分布到所有该主题的分区);

            消息消费者

              a,消费者 订阅  一个或多个主题  ,按照  消息生成的顺序  读取消息

              b,消费者  通过  消息的偏移量 来  区分 已经读过的消息

                  aa,偏移量

                      一个不断递增的整数值

                      创建消息时,Kafka   会   将偏移量   添加到  消息里

                      指定的  分区中每个消息的偏移量   都是唯一的

                      消费者  把  每个分区  最后读取的消息偏移量  保存在  zookeeper或Kafka上,这样即使重启也不会丢失;

              c,消费者   是  消费群组  的一部分

                  aa,消费群组

                     群组  保证  某个分区    同时   只能 被一个消费者  读取; 

      1.2.7、broker

            a,一个   独立的Kafka服务器   被  称为  broker;

            b,broker  接收  来自 生产者 的消息为消息 设置 偏移量,  并  提交消息 到磁盘保存

            c,broker   为   消费者  提供 服务,对 读取 分区的请求 作出响应返回  已存储到磁盘上的消息

            d,单个broker  可以 轻松处理  数千个分区  、每秒百万级 的消息量

            e,broker  是  broker集群  的组成部分;

2、为什么选择Kafka

    多生产者、多消费者、基于磁盘的数据存储、伸缩性、高性能    

3、Kafka安装

    3.1、Kafka是  Java开发的应用程序;

    3.2、Kafka  使用  zookeeper  保存  集群的  元数据信息消费者信息;  

    3.3、安装zookeeper--->安装Kafka  

4、Kafka配置

    4.1、server.properties

//broker的唯一标识符,默认值为0,必须唯一
broker.id=0

//port端口默认9092,也可以更改
listeners=PLAINTEXT://127.0.0.1:9092

//保存 broker元数据的zookeeper地址,端口默认2181
zookeeper.connect=localhost:2181

//Kafka的所有消息都存储在磁盘,log.dir指定消息存储位置
log.dirs=/tmp/kafka-logs

5、Kafka生产者

    

 

    5.1、流程

        创建ProducerRecord对象(包含  目标主题、要发送的内容;  还可以指定 key、分区)--->key,value序列化 为字节数组(在网络中传输)--->分区器

        --->Kafka服务器收到消息后返回一个响应

          (成功:返回一个RecordMetaData对象[包含  主题、分区信息、在分区中的偏移量]   

           失败:返回一个错误--->生产者收到错误--->重新发送消息---->若几次后还是失败--->返回错误信息);

    5.2、创建Kafka生产者

        Kafka生产者3个必选的属性:

            a,bootstrap.servers  指定broker的地址

            b,key.serializer  消息的key的序列化方式(broker希望接收到的key,value都是字节数组)

            c,value.serializer  消息的value的序列化方式  

6、Kafka消费者

    

 

 

    6.1、Kafka消费者  从属于  消费群组

    6.2、创建Kafka消费者

        Kafka消费者参数:

          a,bootstrap.servers    指定broker的地址

          b,key.serializer  消息的key的序列化方式(broker希望接收到的key,value都是字节数组)

          c,value.serializer  消息的value的序列化方式 

          d,group.id    消费群组

    6.3、消费者  轮询   向kafka请求数据;

  

 

posted on 2019-12-12 11:19  anpeiyong  阅读(230)  评论(0编辑  收藏  举报

导航