kafka学习文档(Kafka基本概念、Kafka内部逻辑组成)

kafka学习文档

【有问题或错误,请私信我将及时改正;借鉴文章标明出处,谢谢】

kafka命令操作,看我博客
kafka集群搭建,看我博客

一、Kafka基本概念

1.Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

2.Kafka是一个可持久化的分布式的消息队列

3.Kafka和Flume的比较
Kafka是一个通用的系统。它可以有多个生产者和多个消费者共享多个主题(topic)。
Flume被设计为往HDFS, HBase发送数据,它对HDFS有特殊的优化。
如果数据被设计给 Hadoop使用,使用 Flume。如果在流式处理系统当中,如Storm,Spark Streaming,可以使用kafka。

二、kafka内部逻辑组成

1.名词解释

1)Producer :消息生产者,就是向kafka broker 发消息的客户端;

2)Consumer :消息消费者,向kafka broker 取消息的客户端;

3)Consumer Group (CG):消费者组,由多个consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。

4)Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。

5)Topic:可以理解为一个队列,生产者和消费者面向的都是一个topic;

6)Partition:为了实现扩展性,一个非常大的topic 可以分布到多个broker(即服务器)上,一个topic 可以分为多个partition,每个partition 是一个有序的队列;

7)Replication:副本,为保证集群中的某个节点发生故障时,该节点上的partition 数据不丢失,且kafka仍然能够继续工作,kafka提供了副本机制,一个topic的每个分区都有若干个副本,一个leader和若干个follower。

8)leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是leader。

9)follower:每个分区多个副本中的“从”,实时从leader中同步数据,保持和leader数据的同步。leader发生故障时,某个follower会成为新的follower。

2.Kafka的消息存储和生产消费模型

(1)一个topic分成多个partition。

(2)每个partition内部消息强有序,其中的每个消息都有一个序号叫offset。

(3)一个partition只对应一个broker,一个broker可以管多个partition。

(4)根据时间策略删除,而不是消费完就删除。

(5)producer自己决定往哪个partition写消息,可以是轮询的负载均衡或者是基于hash的partition策略。

3.Kafka的消息构成

(1)kafka里面的消息是有topic来组织的,简单的我们可以想象为一个队列,一个队列就是一个 topic,然后它把每个topic又分为很多个partition,这个是为了做并行的,在每个partition里面是有序的,相当于有序的队列,其中每个消息都有个序号,比如0到12,从前面读往后面写。。

(2)一个partition对应一个broker,一个broker可以管理多个 partition,这个partition可以很简单想象为一个文件,当数据发过来的时候它就往这个partition上面append,迫加就行,kafka和很多消息系统不一样,很多消息系统是消费完了我就把它删掉,而kafka是根据时间策略删除,而不是消费完就删除,在kafka里面没有个消费完这么个概念,只有过期这样一个概念

(3)consumer自己维护消费到哪个 offset每个 consumer都有对应的 group group内是 queue消费模型各个 consume消费不同的 partition一个消息在 group内只消费一次group间是 publish- subscribe消费模型各个 group各自独立消费,互不影响。

(4)consumer自己维护消费到哪个offset。
每个consumer都有对应的group。
group内是queue消费模型。
各个consume消费不同的partition。
一个消息在 group内只消费一次。
group间是 publish- subscribe消费模型。
各个group各自独立消费,互不影响。

【有问题或错误,请私信我将及时改正;借鉴文章标明出处,谢谢】

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
apache kafka 在数据处理中特删是日志和消息的处理上会有徆多出色的表现.首先弼然推荐的是 kafka 的宏 网 http://kafka.apache.org/。在宏网最值得参考的文章就是 kafka design: http://kafka.apache.org/design.html,要特删重规返篇文章,里面有好多理念都特删好,推荐多读几遍。 在 OSC 的翻译频道有 kafka design 全中文的翻译,翻得挺好的,推荐一下: http://www.oschina.net/translate/kafka-design。kafka 的 wiki 是徆丌错的学习文档: https://cwiki.apache.org/confluence/display/KAFKA/Index 接下来就是一系列文章,文章都是循序渐迕的方式带你了览 kafka: 关亍 kafka 的基本知识,分布式的基础:《分布式消息系统 Kafka 刜步》 kafka 的分布式搭建,quick start:《kafka 分布式环境搭建》 关亍 kafka 的实现细节,返主要就是讲 design 的部分:《细节上》、《细节下》 关亍 kafka 开収环境,scala 环境的搭建:《开収环境搭建》 数据生产者,producer 的用法:《producer 的用法》、《producer 使用注意》 数据消费者,consumer 的用法:《consumer 的用法》 迓有些零碎的,关亍通信段的源码览读:《net 包源码览读》、《broker 配置》 扩展的阅读迓有下面返些: 关亍 kafka 和 jafka 的相关博客,特删好,有徆多问题也都找他览决的,大神一般的存在: http://rockybean.github.com/@rockybean kafka 的 java 化版本 jafka:https://github.com/adyliu/jafka 淘宝的 metaQ:https://github.com/killme2008/Metamorphosis 最近在写的 inforQ,刚开始写,也纯粹是为了读下源码,丌定期更新: https://github.com/ielts0909/inforq

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fy_1852003327

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值