乐趣区

关于后端:Kafka-架构和原理机制-图文全面详解

目录

  • 一:Kafka 简介
  • 二:Kafka 根本架构
  • 三:Kafka 基本原理
  • 四:Zookeeper 在 kafka 的作用
  • 五:Kafka 的个性
  • 六:Kafka 的利用场景

一:Kafka 简介

Apache Kafka 是分布式公布 - 订阅音讯零碎,在 kafka 官网上对 kafka 的定义:一个分布式公布 - 订阅消息传递零碎。

Kafka 最后由 LinkedIn 公司开发,Linkedin 于 2010 年奉献给了 Apache 基金会并成为顶级开源我的项目。

Kafka 的次要利用场景有:日志收集零碎和音讯零碎。

二:Kafka 根本架构

Kafka 的架构包含以下组件:

1、话题(Topic):是特定类型的音讯流。音讯是字节的无效负载(Payload),话题是音讯的分类名;

2、生产者(Producer):是可能公布音讯到话题的任何对象;

3、服务代理(Broker):已公布的音讯保留在一组服务器中,它们被称为代理(Broker)或 Kafka 集群;

4、消费者(Consumer):能够订阅一个或多个话题,并从 Broker 拉数据,从而生产这些已公布的音讯;

上图中能够看出,生产者将数据发送到 Broker 代理,Broker 代理有多个话题 topic,消费者从 Broker 获取数据。

三:Kafka 基本原理

咱们将音讯的公布(publish)称作 producer,将音讯的订阅(subscribe)表述为 consumer,将两头的存储阵列称作 broker(代理),这样就能够大抵描绘出这样一个局面:

生产者将数据生产进去,交给 broker 进行存储,消费者须要生产数据了,就从 broker 中去拿出数据来,而后实现一系列对数据的解决操作。

多个 broker 协同单干,producer 和 consumer 部署在各个业务逻辑中被频繁的调用,三者通过 zookeeper 治理协调申请和转发,这样一个高性能的分布式音讯公布订阅零碎就实现了。

图上有个细节须要留神,producer 到 broker 的过程是 push,也就是有数据就推送到 broker,而 consumer 到 broker 的过程是 pull,是通过 consumer 被动去拉数据的。

四:Zookeeper 在 Kafka 的作用

1.  无论是 Kafka 集群,还是 producer 和 consumer,都依赖于 Zookeeper 来保证系统可用性集群保留一些 meta 信息。

2.  Kafka 应用 Zookeeper 作为其分布式协调框架,能够很好地将音讯生产、音讯存储、音讯生产的过程联合在一起。

3.  Kafka 借助 Zookeeper,让生产者、消费者和 broker 在内的所有组件,在无状态的状况下,建设起生产者和消费者的订阅关系,并实现生产者与消费者的负载平衡。

五:Kafka 的个性

1. 高吞吐量、低提早

Kafka 每秒能够解决几十万条音讯,它的提早最低只有几毫秒,每个 topic 能够分多个 partition ,  consumer group 对 partition 进行 consume 操作。

2. 可扩展性

Kafka 集群反对热扩大。

3.  持久性、可靠性

音讯被长久化到本地磁盘,并且反对数据备份避免数据失落。

4.  容错性

容许集群中节点失败(若正本数量为 n, 则容许 n - 1 个节点失败)

5.  高并发

反对数千个客户端同时读写。

六:Kafka 的利用场景

1.  日志收集

一个公司能够用 Kafka 收集各种服务的 log,通过 Kafka 以对立接口服务的形式凋谢给各种 consumer,例如:hadoop、Hbase、Solr 等。

2.  音讯零碎

解耦和生产者和消费者、缓存音讯等。

3. 用户流动跟踪

Kafka 常常被用来记录 web 用户、或者 app 用户的各种流动,例如:浏览网页、搜寻、点击等流动。

这些流动信息,被各个服务器公布到 Kafka 的 topic 中,订阅者再通过订阅这些 topic 来做实时的监控剖析,或者装载到 hadoop、数据仓库中做离线剖析和开掘。

4.  经营指标

Kafka 也常常用来记录经营监控数据。

包含收集各种分布式应用的数据,生产各种操作的集中反馈等,例如:报警和报告。

5. 流式解决

例如:spark streaming、storm。

以上!

作者简介

陈睿 | mikechen , 10 年 + 大厂架构教训,「mikechen 的互联网架构」系列文章作者,专一于互联网架构技术。

浏览「mikechen 的互联网架构」40W 字技术文章合集

Java 并发 | JVM | MySQL | Spring | Redis | 分布式 | 高并发

以上合集,关注「mikechen 的互联网架构 」公众号,回复: 架构,即可取得。

退出移动版