没有合适的资源?快使用搜索试试~ 我知道了~
首页kafka源码解析新手版本(修正版)
资源详情
资源评论
资源推荐
源码解析
目录
诞生的背景
在 内部的应用
它的主要设计目标:
为什么我们要使用消息系统:
的组成
拓扑结构
的启动
的模块组成
处理的 的来源
! "
#$
%&%
日志的组成
%&% 的启动
$ &%
#'(( 处理流程)
$$ '(( 处理流程
(*+, 处理流程
-.&%
.', 的更新机制
($ 机制/
#$)
*!*"
*0,*
*-.*
*&*
*#*
*1$&*
/*' ,2*
)*-.'((*
"*-.0,*
*'(&*)
' )
' 成为 的过程)
' 的初始化( )
' !&,
' ! /
3-$ /
%! "
!$ ! "
' ,2
' $ &,
' 内部的
+',%
$',%/
4$)
$$ 5 "
$%
#!
' 内部 + 流程
/' 内部 $ 删除流程 4$6 &%/
)' 7 8和其它 + 通信流程 ' ', &%)
/ ,,/"
)4$'9%&%/
客户端如何创建 $/
生产者流程7客户端如何向 $ 发送数据8/
普通消费者/)
高级消费者)
1.kafka 诞生的背景
#$, 是由 #$, 软件基金会开发的一个开源消息系统项目,由 写成。 最初是由
开发(7领英8创建于 ""年,致力于向全球职场人士提供沟通平台,并协助他们事半功倍,
发挥所长。作为全球最大的职业社交网站,会员人数在世界范围内已超过 亿,每个《财富》世界
"" 强公司均有高管加入),并于 " 年初开源。" 年 " 月从 #$,+ 毕业。该项目的目标是
为处理实时数据提供一个统一、高通量、低等待的平台。
是一个分布式的、分区的、多复本的日志提交服务。它通过一种独一无二的设计提供了一个消息系统
的功能。现已与 ' $,#$,(,#$,$ 集成。在 内部被用作
的活动流(#*()和运营数据处理管道(!$ )的基础。现在它已被多家不同类型的
公司 作为多种类型的数据管道和消息系统使用。
1.1 kafka 在 LinkedIn 内部的应用
监控:主机通过 发送与系统和应用程序健康相关的指标,然后这些信息会被收集和处理从而创建监
控仪表盘并发送警告。除此之外, 还利用 #$,(: 实现了一个能够实时处理事件的富调
用图分析系统。
传统的消息: 应用程度使用 作为传统的消息系统实现标准的队列和消息的发布—订阅,例如搜索
和内容提要('0)。
分析;为了更好地理解用户行为,改善用户体验, 会将用户查看了哪个页面、点击了哪些内容等
信息发送到每个数据中心的 集群上,并通过 $ 进行分析、生成日常报告。
作为分布式应用程序或平台的构件(日志):大数据仓库解决方案 ! 等产品将 作为核心构件
(分布式日志),分布式数据库 5$ 将其作为内部副本并改变传播层。
1.2 它的主要设计目标:
以时间复杂度为 -78的方式提供消息持久化能力,即使对 4 级以上数据也能保证常数时间复杂度的访问
性能
高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒 "" 条以上消息的传输
支持 间的消息分区,及分布式消费,同时保证每个 ! 内的消息顺序传输
/ 同时支持离线数据处理和实时数据处理
) :支持在线水平扩展
1.3 为什么我们要使用消息系统:
解耦
在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息系统在处理过程中间插入了一
个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处
理过程,只要确保它们遵守同样的接口约束。
冗余
有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持
久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的”插入<获取<删
除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而
确保你的数据被安全的保存直到你使用完毕。
扩展性
因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理
过程即可。不需要改变代码、不需要调节参数。扩展就像调大电力按钮一样简单。
灵活性 & 峰值处理能力
在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见;如果为以能处
理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的
访问压力,而不会因为突发的超负荷的请求而完全崩溃。
可恢复性
系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处
理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
顺序保证
在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会
按照特定的顺序来处理。 保证一个 ! 内的消息的有序性。
缓冲
在任何重要的系统中,都会有需要不同的处理时间的元素。例如,加载一张图片比应用过滤器花费更
少的时间。消息队列通过一个缓冲层来帮助任务最高效率的执行———写入队列的处理会尽可能的快速。
该缓冲有助于控制和优化数据流经过系统的速度。
/ 异步通信
很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放
入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们
) 内部的专业术语
2.1 kafka 的组成
一台 服务器就是一个 +。一个集群由多个 + 组成。一个 + 可以容纳多个 $。
4$
每条发布到 集群的消息都有一个类别,这个类别被称为 4$。(物理上不同 4$ 的消息分开存储,
逻辑上一个 4$ 的消息虽然保存于一个或多个 + 上但用户只需指定消息的 4$ 即可生产或消费数据而不
必关心数据存于何处),也可以理解为一个队列
!
! 是物理上的概念,每个 4$ 包含一个或多个 !为了实现扩展性,一个非常大的 $ 可以
分布到多个 +(即服务器)上,一个 $ 可以分为多个 $,每个 $ 是一个有序的队列。
剩余63页未读,继续阅读
yoga000
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2