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

Kafka技术原理知识点总结的更多相关文章

  1. Kafka技术原理

    详情请参见:http://zqhxuyuan.github.io/2016/05/26/2016-05-13-Kafka-Book-Sample

  2. 大数据相关技术原理资料整理(hdfs, spark, hbase, kafka, zookeeper, redis, hive, flink, k8s, OpenTSDB, InfluxDB, yarn)

    hdfs: hdfs官方文档 深入理解HDFS的架构和原理 https://blog.csdn.net/kezhong_wxl/article/details/76573901 HDFS原理解析(总体 ...

  3. Kafka 技术文档

    Kafka 技术文档   目录 1 Kafka创建背景 2 Kafka简介 3 Kafka好处 3.1 解耦 3.2 冗余 3.3 扩展性 3.4 灵活性 & 峰值处理能力 3.5 可恢复性 ...

  4. apache kafka技术分享系列(目录索引)--转载

    原文地址:http://blog.csdn.net/lizhitao/article/details/39499283 kafka开发与管理: 1)apache kafka消息服务 2)kafak安装 ...

  5. Android热修复技术原理详解(最新最全版本)

    本文框架 什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结   通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单 ...

  6. 初学Kafka工作原理流程介绍

    Apache kafka 工作原理介绍 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上, 队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需 ...

  7. 快速理解高性能HTTP服务端的负载均衡技术原理(转)

    1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...

  8. kafka系列四、kafka架构原理、高可靠性存储分析及配置优化

    一.概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...

  9. kafka技术分享02--------kafka入门

    kafka技术分享02--------kafka入门 1. 消息系统 ​ 所谓的Messaging System就是一组规范,企业利用这组规范在不同的系统之间传递语义准确对的消息,实现松耦合的异步数据 ...

随机推荐

  1. ☆1003 Dijstra

    循环N次 算法分为两部分: 1)找到距离最小的城市,找不到距离更小的城市时退出方法 2)更新距离 实际操作时,先初始化: 更新dis为INF,更新dis[start] = 0: 变种: 找最短路径的条 ...

  2. cf--703--A-- Mishka and Game

    题目链接:http://codeforces.com/problemset/problem/703/A Mishka is a little polar bear. As known, little ...

  3. unicode编码原理及问题

    历史在1963年,计算机的使用尚不广泛,那时使用的是7-bit的ASCII码,范围为0-127作为字符的编码,只支持少部分的字符,但是随着计算机的普及,不同的国家地区开始自己制造自己的编码规范,这导致 ...

  4. DELPHI GDI + TGPFont UnitPixel 问题解决

    查不少资料,在 GPfont := TGPFont.Create(fontFamily, Font.Size , FontStyleRegular,UnitPixel ); 时,显示的字体,并不是按D ...

  5. 第11讲-Java泛型和文件操作

    1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1.泛型 1.2.2.文件操作 2.具体内容 2.1.Java泛型 2.1.1.为什么需要泛型 我们发现在List中,底层是Object[ ]数 ...

  6. 英文写作report

    Writting Attached Files   Maybe you might want to get familiar about how to write the Final report. ...

  7. Docker详解(二)

    目录 1.Docker常用命令 1.1 镜像命令 1.2 容器命令 1.2.1 常用的容器命令 1.2.2 重要的容器命令 序言:上一章我们初步介绍了一下Docker的概念,那么这次我们着手于Dock ...

  8. .netcore 使用阿里云短信

    准备工作 阿里云上申请短信服务 创建短信应用.签名.短信模板并申请审核,如果审核不通过,接口是调不通的. 配置专门用来发短信的accessKeyId和 accessKeySecret 开始开发 下载安 ...

  9. .Net基础篇_学习笔记_第五天_流程控制while循环003

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. TLC5615

    #include <reg51.h> #include "TLC5615.c" code uchar seven_seg[] = {0xc0, 0xf9, 0xa4, ...