Kafka开源代码阅读学习之旅(一)Kafka的简介与架构

一、Kafka简介

KAFKA

1.Kafka诞生的背景

Apache Kafka是由Apache软件基金会开发的一个开源消息系统项目,由Scala写成。Kafka最初是由LinkedIn开发(LinkedIn (领英) 创建于2002 年,致力于向全球职场人士提供沟通平台,并协助他们事半功倍,发挥所长。作为全球最大的职业社交网站,LinkedIn 会员人数在世界范围内已超过3 亿,每个《财富》世界500强公司均有高管加入),并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一高通量低等待的平台。

Kafka是一个分布式的、分区的、多复本的日志提交服务。它通过一种独一无二的设计提供了一个消息系统的功能。现已与Cloudera Hadoop,Apache Storm,Apache Spark集成。在LinkedIn内部被用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家不同类型的公司 作为多种类型的数据管道和消息系统使用。

Kafka作为LinkedIn中的中枢神经系统,管理从各个应用程序汇聚至此的信息流,这些数据被处理之后再被分发到各处。Kafka作为一个消息系统,进行信息的传递;同时它也是日志存储系统,以日志的形式存储了数据源的所有数据

2.Kafka的主要设计目标

Kafka作为一种分布式的、基于发布/订阅的消息系统,其主要设计目标如下

  • 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上的数据也能保持常数时间的访问能力
  • 高吞吐率,即使在非常廉价的商用机器上也能做到单机支持每秒100k条消息的传输
  • 支持Kafka Server间的消息分区及分布式消费,同时保证每个分区内的消息顺序传输
  • 支持离线数据处理和实时数据处理
  • 支持在线水平扩展

3.为什么要使用消息系统

目的如下:

  • 解耦
  • 冗余
  • 扩展性
  • 灵活性和峰值处理能力
  • 可恢复性
  • 顺序保证
  • 缓冲
  • 异步通信

二、Kafka的架构

1.Kafka的基本组成

在kafka集群中生产者将消息发送给以topic命名的消息队列queue中,消费者订阅发往以某个topic命名的消息队列queue中的消息。其中kafka集群有若干个broker组成,topic由若干个partition组成,每个partition里面的消息通过offset来获取。

1.broker:简单来说一台 kafka服务器 就是一个broker,一个集群由多个broker组成,一个broker可以容纳多个topic

  • topic: 每条发送到kafka集群的
  • partition: 一个大的topic可以分为多个partition,从而分部到多台broker上,partition中的每条消息都会被分配一个自增ID(offset)。
  • offset: 消息在topic的partition中的位置。
  • producer: 消息生产者,即将消息发布到指定的topic中
  • consumer: 消息消费者,向指定的topic中获取消息
  • zookeeper: 存放kafka集群相关元数据的组件

2.一个简单的消息发送流程

1)producer根据指定的路由方法将消息push到topic的某个partition中

2)kafka集群接收到producer发来的消息后,将其持久化到硬盘,并保留消息指定时长,而不关注消息是否被消费

3)consumer从kafka集群中pull数据,并获取消息的offset

3.Kafka的拓扑结构

一个典型的kafka集群的拓扑结构如图所示

在这里插入图片描述
一个典型的Kafka集群中包含若干个Producer,若干个Broker ,若干个Consumer Group,以及一个Zookeeper集群。Kafka 通过Zookeeper管理集群配置。Producer使用Push模式将消息发布到Broker.上,Consumer使用Pull模式从Broker上订阅并消费消息。

Referance: Kafka源码解析与实战 - 王亮 机械工业出版社
多角度剖析kafka底层源码 - 开课吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值