生产者

生产流程 32页


生产者创建

Kafka生产者需要三个必须参数:broker地址清单,key和value的序列化方式 (如StringSerializer)

生产者发送


ACKS

acks 参数代表多少副本分区副本收到消息才算写入成功
0 生产者发送即不管服务器响应
1 只等待主节点响应
all 等待所有节点响应

数据有序写入,有序读取

如果消息不含key,则默认轮询使用分区。
如果消息包含key,则默认hash散列。得注意大key问题,可以自定义重分区

消费者

0.10.1 旧版本内。kafka 心跳监测节点存活和 消息轮询频率监测 (处理消息花费时间) 是相互独立的
session.timeout.ms 默认3s

由消费组的群主来分配消费者分区

创建消费者

必须的三个创建参数和生产者一致,也可以创建group.id的消费者群

偏移量提交

1 自动提交,提交间隔默认5s。rebalance会重复提交
2 同步/异步手动提交
3 同步异步组合提交。平时异步,在finally最后一次用同步提交如果不能容忍任何数据重复问题。可以把offset和保存记录同时存在db中。出现异常可以一起回滚。然后每次读取db的offset

异步手动提交的重复消费

控制器

功能:通过zk选取控制器,控制器来选取首领副本
控制分区主从节点的控制器本身也是一个broker

副本和请求


客户端如何知道从哪个副本发送消费生产请求?

1 每个broker都会保存元信息,服务器可以告诉客户端topic的分区,首领副本等信息。
2 客户端和任意broker发送元信息请求获得信息,再和首领副本交互。
3 定时刷新元信息,防止变动

生产请求


生产的数据会写入本地文件系统的缓存中,ack的判定也只是知道写入了缓存中。不保证何时写入磁盘。
Kafka依赖复制功能保证数据的持久性

获取请求

首领副本处理和零拷贝响应
响应判定:积累一定数据量响应,达到一定时间响应

只能读取已写入所有同步副本的信息

其他请求

Kafka内部通讯基于TCP的二进制协议,协议内增加请求类型
例如offset由原先zk存储变更为特定kafka主题上保存。在协议内增加offset请求类型

存储

分区设定

分区数据的删除:根据设定时间参数删除,默认7天 / 根据分区大小参数删除,默认1G

额外清理模式

可以开启清理模式,根据脏数据比例自动清理

文件格式

通过索引立刻读取指定分区的offset数据

可靠的数据传递

原子,一致,隔离,持久

Kafka 数据传递的保证点

复制

判定为是同步的跟随着副本条件

后续还需要大量补充

《Kafka权威指南》记录相关推荐

  1. 《Vue.js实战》记录

    目录 初识Vue.js 指令 v-html v-pre v-bind v-on v-cloak v-once v-show v-for v-model 自定义指令 全局指令 局部指令 钩子函数 计算属 ...

  2. 3.Vue.js 实战 调查问卷WebApp项目

    问卷调查demo已上传,欢迎大家指正,欢迎大家下载:https://download.csdn.net/download/lzb348110175/11085995 如果您没积分的话,可以私信/评论, ...

  3. vue.js实战——购物车练习(包含全选功能)

    vue.js实战第5章 54页的练习1 直接放代码好了,全选的部分搞了好久,代码好像有点啰嗦,好在实现功能了(*^▽^*) HTML: <!DOCTYPE html> <html l ...

  4. js 查错_7年前端开发经验的我,写了本Vue.js实战开发,开源高清PDF下载

    Vue作为目前发展最迅速的前端框架越来越多的受到前端T程师青睐,Vue社区也是Web前端最活跃的社区之一. 更多的公司在转为Vue框架,但针对Vue优秀权威.实战的图书相对欠缺,梁灏著<Vue. ...

  5. vue --- vue.js实战基础篇课后练习

    练习1:在输入框聚焦时,增加对键盘上下键按键的支持,相当于加1和减1 练习2:增加一个控制步伐的prop-step,比如设置为10,点击加号按钮,一次增加10 思路: // 考虑到子模板的复用性,即在 ...

  6. axios vue 动态date_Web前端Vue系列之-Vue.js 实战

    课程简介: 课程目标:通过本课程的学习,让大家掌握Vue.js的进阶知识并在项目中应用. 适用人群:具有一定vue开发基础的开发人员. 课程概述:Vue (读音 /vjuː/,类似于 view) 是一 ...

  7. 《Vue.js实战》第七章.组件

    7.1 组件作用: 提高代码复用性,使项目易于维护 7.1 组件的使用 7.1.1 组件注册-全局注册 全局注册后,任何vue的实例都可以使用该组件. Vue.component('my-compon ...

  8. Vue.js实战——内置指令(二)

    参考<Vue.js实战>梁灏 Vue内置指令第一部分:Vue.js实战--内置指令(一) 1 方法与事件 1.1 基本用法 直接上代码,这样最实在: <!DOCTYPE html&g ...

  9. Vue.js实战——表单与v-model

    参考<Vue.js实战> 梁灏 1. 基本用法 话不多说,来个入门: <!DOCTYPE html> <html><head><meta char ...

  10. Vue.js实战——内置指令(一)

    参考:<Vue.js实战>梁灏 1. 基本指令 1.1 v-cloak <!DOCTYPE html> <html><head><meta cha ...

最新文章

  1. 64位Ubuntu上编译32位程序
  2. SpringMVC_文件上传
  3. Jerry开发的SAP note工具
  4. SAP CRM Fiori My Appointment应用里点了Edit按钮后三个Roundtrip分析
  5. 共享一个复杂的WZSZF数据结构 jshdwz jhcbgc jx8net
  6. Python子类继承父类构造函数说明
  7. 排序算法Java实现(希尔排序)
  8. 时间序列的平稳性检验方法汇总
  9. 根据城市的名称获取省份的名称
  10. 【QT】FillRect填充的区域实现部分区域透明
  11. The CDB process terminated
  12. [CSS3] 使用边框和背景(设置元素的背景)
  13. openwrt 配置过程
  14. 大部分有高学历的人比低学历的人强
  15. win10光驱位连接计算机,搞定Win10系统识别不了光驱位机械硬盘的设置方法
  16. DIY自制STC单片机开发板
  17. 第五章:使用HBuilder
  18. 力扣(1053.115)补9.13
  19. C语言:判断两数是否互质
  20. 如何理解margin重叠问题

热门文章

  1. matlab 绘图常用命令
  2. 从项目制到产品制,日子变美好了吗?
  3. 干货分享:在Windows下使用Visual Studio搭建C语言开发环境
  4. 人工智能概念之——各向异性——亲和矩阵
  5. VUE源码学习第一篇--前言
  6. midas显示代理服务器错误,[转载]在使用桥博、midas的时候经常会遇到的问题
  7. Rust 1.0发布一周年,发展回顾与总结
  8. 如何查询中标公告?工程中标公示在哪里查询?
  9. 净空法师法语:你想真正消业障,要用真心待人接物!南无阿弥陀佛!
  10. Invalid keystore format 报错解决