zoukankan      html  css  js  c++  java
  • Kafka技术原理知识点总结

    1、Kafka是由Linkedin公司开发的,使用Scala语言编写的,分布式,多副本,多分区的,发布订阅模式的消息系统,他通常用于日志系统的搭建,
    2、Kafka和Zookeeper:Kafka通过Zookeeper管理集群配置,选举Controller,同时在老版本的Consumer-API中,当Consumer发生变化时,通过Zookeeper实现Consumer-Group的Reblance。
    3、Kafka的基本概念:
    producer:
      消息生产者,发布消息到 kafka 集群的终端或服务。
    broker:
      kafka 集群中包含的服务器。
    topic:
      每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。
    partition:
      partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。
    consumer:
      从 kafka 集群中消费消息的终端或服务。
    Consumer group:
      high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
    replica:
      partition 的副本,保障 partition 的高可用。
    leader:
      replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
    follower:
      replica 中的一个角色,从 leader 中复制数据。
    controller:
      kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover。
    zookeeper:
      kafka 通过 zookeeper 来存储集群的 meta 信息。
    4、每一个Topic,Kafka会将它分成若干个partition,每个partition通过负载算法存储有序的消息,每个消息的序号叫做消息的Offset。
      每个Topic的所有partition都是已文件的形式存储在硬盘上的。
    5、Kafka的高可用性来源于他的副本机制,可以在创建Topic的时候指定该Topic被划分为几个分区,拥有几个副本。
    6、Producer发布消息:Producer采用Push的模式将消息发布到Broker上,每条消息都被Append到对应Topic的Partition中,属于顺序谢磁盘。
    7、通过初始化producer中request.required.acks值来实现不同的ack策略。
      0:生产者producer不等待来自broker同步完成的确认就继续发送下一条(批)消息。
      1:producer在leader已成功收到的数据,写本地日志文件成功,返回客户端。
      -1:producer在follower副本确认接收到数据后才算一次发送完成。
    8、Kafka数据日志的删除策略:
      无论消息是否被消费,kafka 都会保留所有消息。有两种策略可以删除旧数据:
      1. 基于时间:log.retention.hours=168
      2. 基于大小:log.retention.bytes=1073741824
    9、Kafka-Consumer:
      Kafka通过Poll的方式从Broker中读取数据进行消费。
      通过设置不同的消费者组,实现Topic消息的多次消费。
      Kafka可以指定从Topic的那个位置来消费。
      老版本的API将Consumer-Offset信息存在Zookeeper中,新版本的API将Consumer-Offset信息存在Kafka名为_consumer_offsets的topic中。
    10、可以设置Consumer的auto.commit.enable参数实现Offset是否自动提交。
    11、常用Zookeeeper和Kafka的命令
      Zookeeper命令
      查看服务器状态 ./zkServer.sh status
      连接zk客户端: zkCli.sh
      ls/ll 查看当前目录下的信息
      get 获取路径详细信息
      Kafka命令
      启动kafka bin/kafka-server-start.sh server.properties
      停止Kafka bin/kafka-server-stop.sh server.properties
      创建Topic bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
      查看Topic bin/kafka-topics.sh --list --zookeeper 192.169.1.147:2181,192.169.1.147:2182,192.169.1.147:2183
      发送消息 bin/kafka-console-producer.sh --broker-list 192.169.1.147:9093, 192.169.1.147:9094, 192.169.1.147:9095 --topic test
      消费消息 bin/kafka-console-consumer.sh --bootstrap-server 192.169.1.147:9093, 192.169.1.147:9094, 192.169.1.147:9095 --topic test --from-beginning

  • 相关阅读:
    java模糊关键字查询
    Asp.Net MVC 扩展 Html.ImageFor 方法详解
    mvc下ajax请求遇到session超时简单处理方式
    8天学通MongoDB——第一天 基础入门
    MVC5中使用jQuery Post 二维数组和一维数组到Action
    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(33)-数据验证共享
    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(31)-MVC使用RDL报表
    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(30)-本地化(多语言)
    JQuery文件上传插件ajaxFileUpload在Asp.net MVC中的使用
    MVC 5 + EF6 入门完整教程14 -- 动态生成面包屑导航
  • 原文地址:https://www.cnblogs.com/likethis/p/9454168.html
Copyright © 2011-2022 走看看