Kafka的原理和一些关键术语概念
本文带大家了解Kafka基本原理和一些关键术语概念。
Kafka最初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本并且基于ZooKeeper协调的分布式消息系统,现在已经捐献给了Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流处理等多种特性而被广泛应用。
Apache Kafka是一个分布式的发布-订阅消息系统,能够支撑海量数据的数据传递。在离线和实时的消息处理业务系统中,Kafka都有广泛的应用。Kafka将消息持久化到磁盘中,并对消息创建了备份保证了数据的安全。Kafka在保证了较高的处理速度的同时,又能保证数据处理的低延迟和数据的零丢失。
特性
(1)高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个主题可以分多个分区, 消费组对分区进行消费操作;(2)可扩展性:kafka集群支持热扩展;(3)持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;(4)容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败);(5)高并发:支持数千个客户端同时读写(6)日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如Hadoop、Hbase、Solr等;(7)消息系统:解耦和生产者和消费者、缓存消息等;(8)用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点 击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时 的监控分析,或者装载到Hadoop、数据仓库中做离线分析和挖掘;(9)运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告;(10)流式处理:比如spark streaming和storm;可伸缩性:Kafka的两个重要特性早就了它的可伸缩性
1、Kafka 集群在运行期间可以轻松地扩展或收缩(可以添加或删除代理),而不会宕机。2、可以扩展一个 Kafka 主题来包含更多的分区。由于一个分区无法扩展到多个代理,所以它的容量受 到代理磁盘空间的限制。能够增加分区和代理的数量意味着单个主题可以存储的数据量是没有限制的。容错性和可靠性:Kafka 的设计方式使某个代理的故障能够被集群中的其他代理检测到。由于每个主题都可以在多个代理上复制,所以集群可以在不中断服务的情况下从此类故障中恢复并继续运行。
吞吐量:代理能够以超快的速度有效地存储和检索数据。
生产者即数据的发布者,该角色将消息发布到Kafka的topic中。broker接收到生产者发送的消息后, broker将该消息追加到当前用于追加数据的segment文件中。生产者发送的消息,存储到一个partition中,生产者也可以指定数据存储的partition。
消费者可以从broker中读取数据。消费者可以消费多个topic中的数据。
在Kafka中,使用一个类别属性来划分数据的所属类,划分数据的这个类称为topic。如果把Kafka看做为一个数据库,topic可以理解为数据库中的一张表,topic的名字即为表名。
topic中的数据分割为一个或多个partition。每个topic至少有一个partition。每个partition中的数据使用多个segment文件存储。partition中的数据是有序的,partition间的数据丢失了数据的顺序。如果topic有多个partition,消费数据时就不能保证数据的顺序。在需要严格保证消息的消费顺序的场景下,需要将partition数目设为1。
每条消息都有一个当前Partition下唯一的64字节的offffset,它指明了这条消息的起始位置。
副本是一个分区的备份。副本不会被消费者消费,副本只用于防止数据丢失,即消费者不从为follower的partition中消费数据,而是从为leader的partition中读取数据。副本之间是一主多从的关系。
Kafka 集群包含一个或多个服务器,服务器节点称为broker。broker存储topic的数据。如果某topic有 N个partition,集群有N个broker,那么每个broker存储该topic的一个partition。如果某topic有N个 partition,集群有(N+M)个broker,那么其中有N个broker存储该topic的一个partition,剩下的M个 broker不存储该topic的partition数据。
如果某topic有N个partition,集群中broker数目少于N个,那么 一个broker存储该topic的一个或多个partition。在实际生产环境中,尽量避免这种情况的发生,这种 情况容易导致Kafka集群数据不均衡。
Follower跟随Leader,所有写请求都通过Leader路由,数据变更会广播给所有Follower,Follower与 Leader保持数据同步。如果Leader失效,则从Follower中选举出一个新的Leader。当Follower与Leader挂掉、卡住或者同步太慢,leader会把这个follower从“in sync replicas”(ISR)列表中删除,重新创建一个Follower。
Zookeeper负责维护和协调broker。当Kafka系统中新增了broker或者某个broker发生故障失效时,由 ZooKeeper通知生产者和消费者。生产者和消费者依据Zookeeper的broker状态信息与broker协调数据的发布和订阅任务。
分区中所有的副本统称为AR。
所有与Leader部分保持一定程度的副(包括Leader副本在内)本组成ISR。
与Leader副本同步滞后过多的副本。
高水位,标识了一个特定的offffset,消费者只能拉取到这个offffset之前的消息。
即日志末端位移(log end offffset),记录了该副本底层日志(log)中下一条消息的位移值。注意是下一条消息!也就是说,如果LEO=10,那么表示该副本保存了10条消息,位移值范围是[0, 9]。
上一篇:所以我化妆第1集剧情
下一篇:孙红雷在哪部电视剧里扮演的角色是0921
最近更新娱乐资讯
- 获奖影评赏析|《阿丽塔·战斗天使》
- 人生必看十部好看的纪录片(十部必看的现实主义纪录片)
- 日本十大禁欲动漫盘点:唯美霸道下的污镜头
- 墨西哥大麻即将合法化,美媒:美国夹在两个“卖大麻的邻居”之间
- “和合”文化背景下昭君文化的价值生成
- 马来酸阿法替尼片人体生物等效性试验
- 原创《满城尽带黄金甲》:喧哗与沉静的戏台,道德与伦理的悲歌
- 裴旖旎
- 隐适美附件又掉了,从第一天掉了2颗,第二天掉了1颗,今晚我还戴牙套吗?
- 电视剧《最美的青春》:好作品是如何炼就的
- 狗头萝莉出摊卖煎饼大家怎么看?
- 记者的职业伦理:我该何时放下相机
- 绝命毒师电影,「蚁人」改造DNA,首部Netflix华语剧...10月流媒体片单
- 这是一部非常独特的「成人动画」,少儿不宜
- 高分电影推荐!六部直击人性黑暗面的韩国片!部部引人深省!
- 2022天津解放军464医院整形美容中心整形价格表(价目表)全新发布
- 精 [电影推荐]一再婚女人因拯救女儿,让两个家庭面临人性考验,此电影令人感动
- 缓冲晶体溶液与生理盐水对重症监护病房患者急性肾损伤的影响:SPLIT随机临床试验
- 未成年人千万别看这部片子,简直太变态了!!!
- 生态在文学中的位置
- 与3800多名女性发生过关系,世界小电影之王,终于那啥了
- 新加坡电影《爸妈不在家》爆冷获多项金马奖
- 调查称52%受访者认为国产电影色情暴力问题严重
- 红楼梦初中读书笔记
- 家庭伦理剧,小品剧本《家庭矛盾》