介绍

  • 一种高吞吐量的分布式发布订阅消息系统
  • 消息类型:主体Topic(广播)、队列Queue(一对一)
  • 消息系统类型:同步消息系统、异步消息系统
  • 常见消息产品:Redis、Kafka、JMS

术语

  • Producer:生产者,向 Kafka Broker 上的 Topic 发布消息的应用程序
  • Broker:缓存代理服务进程,一个Kafka 集群由多个 Broker 组成,Broker 负责接收和处理客户端发送过来的请求,以及对消息进行持久化
  • Message:消息,通信的基本单位,每个 Producer 可以向一个 Topic 发布消息
  • Topic:承载消息的逻辑容器,在实际使用中多用来区分具体的业务
  • Partition:Topic物理上的分组,一个Topic可以分为多个Partition,每个Partition是一个有序的队列。Partition中的每条消息都会被分配一个有序的id(Offset),一个分区对应一个消费者
  • Consumer:消费者,订阅 Topics 并从上面拉取消息的应用程序
  • Group:消费组,多个消费者组成一个消费组
  • Offset:表示分区中每条消息的位置信息,是一个单调递增且不变的值,消费者在消费的过程中使用 Offset 记录自己消费了多少数据。老版本用zookeeper存储offset,当consumer宕机重启后读取offset,从上次消费截止的地方继续消费。新版本将offset作为普通消息存在kafka中,提交到__consumer_offsets中保存
  • Coordinator:协调者,为 Consumer Group 服务,负责为 Group 执行 Rebalance 以及提供位移管理和组成员管理等,所有 Broker 都有各自的 Coordinator 组件

流程

  • Producer将消息推送到Broker,Consumer从Broker拉取消息
  • 每条消息被顺序写入到Partition中
  • 同一Topic的一条消息只能被同一个Consumer Group内的一个Consumer消费,多个Consumer Group可同时消费这一消息
  • 将 Consumer 的位移数据作为一 条条普通的 Kafka 消息,提交到位移主题 __consumer_offsets 中
  • Kafka 集群中的第一个 Consumer 程序启动时,Kafka 会自动创建位移主题

设计要点

  • 内存访问:使用Linux文件系统的cache,高效缓存数据
  • 磁盘持久化:不再内存中cache,直接顺序写入磁盘
  • zero-copy:减少IO操作
  • 消息处理:支持数据批量发送压缩
  • 主题分区:Topic 划分为多个 Partition,提高消息处理并行度
  • 负载均衡:Producer 根据用户指定算法,将消息发送到指定的 Partition
  • 消息拉取:简化kafka设计,Consumer根据消费能力自主控制消息拉取速度,自主选择消费模式
  • 可扩展性:需要增加 Broker结点时,新增 Broker向 ZK 注册,Procucer 和 Consumer根据 ZK 上的 Watcher 调整

应用场景

  • 消息队列
  • 行为跟踪
  • 元信息监控
  • 日志收集
  • 流处理

命令

  • Broker配置文件:config/server.properties

    • id:0
    • 端口:9092
    • zookeeper:localhost:2181
  • 启动:bin/kafka-server-start.sh config/server.properties &
  • 创建主题:bin/kafka-topics.sh --create --zookeeper localhost:2181 -replication-factor 1 --partitions 3 --topic mydemo1
  • 列出主题:bin/kafka-topics.sh --zookeeper bigdata111:2181 --list
  • 删除主题:bin/kafka-topics.sh --zookeeper bigdata111:2181 --delete --topic mydemo1
  • 生产者(发送消息):bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mydemo1
  • 消费者(接收消息)
    • bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic mydemo1(老版本)
    • bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mydemo1(新版本)

参考

Kafka 教程

https://blog.csdn.net/hmsiwtv/article/details/46960053

https://www.orchome.com/kafka/index

https://www.cnblogs.com/wq3435/p/8001094.html

Kafka 中 bootstrap-server broker-list 和 zookeeper的区别

https://www.cnblogs.com/tonglin0325/p/8810313.html

Kafka offset

https://www.cnblogs.com/wq3435/p/8001094.html

CDH Kafka

https://www.cnblogs.com/yangshibiao/p/10868615.html

SparkStreaming Kafka

https://www.jianshu.com/p/667e0f58b7b9

Exactly Once

https://blog.csdn.net/liangyihuai/article/details/82931140

Resetting first dirty offset of __consumer_offsets

https://www.pianshen.com/article/3368623605/

[DB] Kafka的更多相关文章

  1. Kafka监控系统Kafka Eagle:支持kerberos认证

    在线文档:https://ke.smartloli.org/ 作者博客:https://www.cnblogs.com/smartloli/p/9371904.html 源码地址:https://gi ...

  2. Kafka监控系统Kafka Eagle剖析

    1.概述 最近有同学留言反馈了使用Kafka监控工具Kafka Eagle的一些问题,这里笔者特意整理了这些问题.并且希望通过这篇博客来解答这些同学的在使用Kafka Eagle的时候遇到的一些困惑, ...

  3. kafka监控kafka-eagle 容器化配置

    由于kafka.zk 集群已经部署在k8s中,  kafka的服务名 kafka-hs, zk的服务名为:zk-cs ,对kafka进行监控,所以需要把监控部署到k8s中,选择使用kafka-eagl ...

  4. Kafka集群监控工具之二--Kafka Eagle

    基于kafka: kafka_2.11-0.11.0.0.tgz kafka-eagle-bin-1.2.1.tar.gz 1.下载解压 tar -zxvf kafka-eagle-bin-1.2.1 ...

  5. Kafka学习之(七)搭建kafka可视化服务Kafka Eagle

    一.下载安装包  kafka-eagle-bin-1.2.4.tar.gz 百度云链接:链接:https://pan.baidu.com/s/1SNIkpsvs20A_Ljtx5PaMuA 密码:o4 ...

  6. 使用canal获取mysql的binlog传输给kafka,并交由logstash获取实验步骤

    1. 实验环境 CPU:4 内存:8G ip:192.168.0.187 开启iptables防火墙 关闭selinux java >=1.5 使用yum方式安装的java,提前配置好JAVA_ ...

  7. Kafka Eagle 安装

    Kafka Eagle 是一款开源的 Kafka 集群监控系统. 一.下载 https://download.kafka-eagle.org/ 二.安装 # 解压 .tar.gz -C /opt/ / ...

  8. 使用kafka-eagle监控Kafka

    # 监控kafka集群,开启监控趋势图使用 # 有一个问题,需要在kafka-server-start.sh文件中配置端口,有如下三种办法 # 第一种:复制并修改kafka目录,比如kafka-1,k ...

  9. Kafka Eagle安装详情及问题解答

    1.概述 最近有很多同学给笔者留言,说在安装Kafka Eagle的时候,会遇到一些问题,请教如何解决?今天笔者就在这里总结一下安装步骤,和一些安装的注意事项,以及解决方式. 2.内容 在安装Kafk ...

随机推荐

  1. DNS 缓存中毒--Kaminsky 攻击复现

    0x00 搭建实验环境 使用3台Ubuntu 16.04虚拟机,可到下面的参考链接下载 攻击的服务是BIND9,由于条件限制,这里使用本地的一台虚拟机当作远程DNS解析器,关闭了DNSSEC服务,其中 ...

  2. SQL注入靶场实战-小白入门

    目录 SQL注入 数字型 1.测试有无测试点 2.order by 语句判断字段长,查出字段为3 3.猜出字段位(必须与内部字段数一致)(用union联合查询查看回显点为2,3) 4.猜数据库名,用户 ...

  3. 别人 echo 、你也 echo ,是问 echo 知多少?-- Shell十三问<第三问>

    别人 echo .你也 echo ,是问 echo 知多少?-- Shell十三问<第三问> 承接上一章所介绍的 command line ,这里我们用 echo 这个命令加以进一步说明. ...

  4. 面试题:Linux 中一个文件的 MAC 代表什么意思

    查看文件状态 stat ls 命令能够查看文件的类型.时间.属主.属组,大小以及最近的修改时间等信息,但是还有一些文件的扩展属性,是使用 ls 命令无法查看到的 stat 命令则用于显示文件的详细属性 ...

  5. 安装mongoDB出现的问题:无法启动

    在我的电脑- 管理 - 服务-中会出现一个MongoDB Server的服务,你需要去手动删除这个服务删除指令: 在cmd管理员模式下使用: sc delete MongoDB Server 然后再配 ...

  6. Mysql多表合并以及连接问题

    目的 1.为了备战过两天的面试,我又重新给孙老师的课件看了一遍,学累了,就写写自己的新的体会,和遇到的问题,来进行一个记录,这是知识产出的过程,据说可以帮助我学习,看视频什么的都是被动学习,不进行及时 ...

  7. java面试-生产环境出现CPU占用过高,谈谈你的分析思路和定位

    思路:结合Linux和JDK命令一起分析 1.用top命令找出CPU占比最高的进程 2.ps -ef|grep java|grep -v grep 或者jps -l进一步定位,得知是怎样一个后台程序惹 ...

  8. (十六)Struts2的标签库

    一.简介 Struts2的标签库使用OGNL为基础,大大简化了数据的输出,也提供了大量标签来生成页面效果,功能非常强大. 在早期的web应用开发中,jsp页面主要使用jsp脚本来控制输出.jsp页面嵌 ...

  9. SQL Server如何将查询的内容保存到新的sql 表中

    我是采用语句将 查询后的数据保存到一个新表中 1)采用into table 语句,需要保存到的这个新表不需要提前创建 select *into NewTable from Table --插入新表的语 ...

  10. 前端 JS 原生 javascript 和 location.hash 实现一个单页应用的路由 router

    开篇日常立个flag-- 前言 最近在做一些应用,类似于单页应用,想实现类似于 Vue 路由的效果. 但是个人 Vue 基础四舍五入约等于无,而且看着 Vue-router 吃力+用不起来(因为我的项 ...