搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
博客
群组
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
Kafka
›
连载型
›
kafka详解一、Kafka简介
0
7
10
分享
kafka详解一、Kafka简介
坎蒂丝_Swan
2015-1-8 14:27:34
发表于
连载型
[显示全部楼层]
只看大图
阅读模式
关闭右栏
7
86009
本帖最后由 坎蒂丝_Swan 于 2015-1-8 14:59 编辑
问题导读
1.Kafka有何特性?
2.Kafka有哪些组件?
背景:
当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战:
如何收集这些巨大的信息
如何分析它
如何及时做到如上两点
以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要一个沟通两者的桥梁-消息系统。
从一个微观层面来说,这种需求也可理解为不同的系统之间如何传递消息。
Kafka诞生:由 linked-in 开源
kafka-即是解决这类问题的一个框架,它实现了生产者和消费者之间的无缝连接。
kafka-高产出的分布式消息系统(A high-throughput distributed messaging system)
Kafka特性:它形容自己的设计是独一无二的,先看一下它有如何过人之处:
快:单个kafka服务每秒可处理数以千计客户端发来的几百MB数据。
可扩展性:一个单一集群可作为一个大数据处理中枢,集中处理各种类型业务
持久化:消息被持久化到磁盘(可处理TB数据级别数据但仍保持极高数据处理效率),并且有备份容错机制
分布式:着眼于大数据领域,支持分布式,集群可处理每秒百万级别消息
实时性:生产出的消息可立即被消费者消费
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(2).png
Kafka的组件:
topic:消息存放的目录即主题
Producer:生产消息到topic的一方
Consumer:订阅topic消费消息的一方
Broker:Kafka的服务实例就是一个broker
如下图所示,Producer生产的消息通过网络发送给Kafka cluster,而Consumer从其中消费消息
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(3).png
Topic 和Partition:
消息发送时都被发送到一个topic,其本质就是一个目录,而topic由是由一些Partition Logs(分区日志)组成,其组织结构如下图所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image.png
我们可以看到,每个Partition中的消息都是有序的,生产的消息被不断追加到Partition log上,其中的每一个消息都被赋予了一个唯一的offset值。
Kafka集群会保存所有的消息,不管消息有没有被消费;我们可以设定消息的过期时间,只有过期的数据才会被自动清除以释放磁盘空间。比如我们设置消息过期时间为2天,那么这2天内的所有消息都会被保存到集群中,数据只有超过了两天才会被清除。
Kafka需要维持的元数据只有一个--消费消息在Partition中的offset值,Consumer每消费一个消息,offset就会加1。其实消息的状态完全是由Consumer控制的,Consumer可以跟踪和重设这个offset值,这样的话Consumer就可以读取任意位置的消息。
把消息日志以Partition的形式存放有多重考虑,第一,方便在集群中扩展,每个Partition可以通过调整以适应它所在的机器,而一个topic又可以有多个Partition组成,因此整个集群就可以适应任意大小的数据了;第二就是可以提高并发,因为可以以Partition为单位读写了。
分布式:
这些Partitions分布在集群的每一台server上,而每一个Partition在集群中都可以有多个备份,这个备份数量是可配置的。
每个Partition都有一个leader server,而其他备份的server都称为followers,只有leader服务器才会处理这个Partition上所有的读写请求,而其它followers则被动的复制leader上的数据。如果一个leader挂掉了,followers中的一个服务器则会自动升级为leader。因此,其实集群中的每个服务器都扮演着一个Partition的leader服务器,和其它Partition的follower服务器。
Producers:
Producer可以根据自己的选择发布消息到一个主题,Producer也可以自己决定把消息发布到这个主题的哪个Partition,当然我们可以选择API提供的简单的分区选择算法,也可以自己去实现一个分区选择算法。
Consumers:
消息传递通常由两种模式,queuing(队列)和publish-subscribe (发布-订阅)
queuing:每个Consumer从消息队列中取走一个消息
pub-scrib:消息被广播到每个Consumer
Kafka通过提供了一个对Consumer的抽象来同时实现这两种模式-ConsumerGroup。Consumer实例需要给自己指定一个ConsumerGroup的名字,如果所有的实例都用同一个ConsumerGroup名字,那么这些Consumer就会以queuing的模式工作;如果所有的实例分别用的不同的ConsumerGroup名字,那么它们就以public-subscribe模式工作。
如下图所示:含两台server的集群一共有p0~p3四个Partition,两个Consumer Group,在Group内部是以queuing的模式消费Partition,在Group之间是以pub-scrib模式消费。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(1).png
消息顺序性:
Kafka是如何确保消息消费的顺序性的呢?前面讲到过Partition,消息在一个Partition中的顺序是有序的,但是Kafka只保证消息在一个Partition中有序,如果要想使整个topic中的消息有序,那么一个topic仅设置一个Partition即可。
kafka详解一、Kafka简介
Kafka详解二、如何配置Kafka集群
kafka详解三:开发Kafka应用
kafka详解四:Kafka的设计思想、理念
Kafka详解五、Kafka Consumer的底层API- SimpleConsumer
本帖被以下淘专辑推荐:
·
kafka
|
主题: 5, 订阅: 1
欢迎加入about云群
90371779
、
322273151
、
432264021
,云计算爱好者群,亦可关注
about云腾讯认证空间
||
关注本站微信
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(7)人评论
电梯直达
正序浏览
gqx1984
发表于 2015-3-21 17:18:52
先留个印,后面项目用到
回复
使用道具
举报
显身卡
xmhxmhxmh
发表于 2016-4-12 09:15:42
kafka用处还是蛮大的,保留了!
回复
使用道具
举报
显身卡
wanmeilingdu
发表于 2016-5-10 15:32:31
先留个印,后面项目用到
回复
使用道具
举报
显身卡
xiaosong_6666
发表于 2016-6-1 20:44:18
卡夫卡,不错
回复
使用道具
举报
显身卡
dahuatech
发表于 2016-6-7 16:10:46
多谢楼主分享
回复
使用道具
举报
显身卡
a530491093
发表于 2017-8-23 15:44:21
赞一个!感谢分享!
回复
使用道具
举报
显身卡
yngwiewang
发表于 2017-11-6 14:19:27
学习了,谢谢。
回复
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
坎蒂丝_Swan
高级会员
关注
148
主题
148
帖子
52
粉丝
TA的主题
flume学习(十一):如何使用Spooling Directory Source
2015-3-19
flume学习(十):使用Morphline Interceptor
2015-3-19
flume学习(九):自定义拦截器
2015-3-19
flume学习(七)、(八):如何使用event header中的key值以及自定义source
2015-3-18
flume学习(六):使用hive来分析flume收集的日志数据
2015-3-18
24小时热文
哈佛通识教育红皮书 (北大高等教育文库·大
代码精进之路:从码农到工匠
为什么面试难!一文帮我们看透本质,拿捏of
程序员薪资排名,AI位居榜首,平均年薪277
Django实战:Python Web典型模块与项目开发
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈