系统设计中的Apache Kafka

320 阅读4分钟

本文将介绍Apache Kafka在系统设计中的用途,它的核心能力,以及它是如何工作的。

目录

  • 简介
  • 核心能力
  • 什么是事件流
  • 使用案例
  • 使用Kafka的公司
  • 用例:Youtube
  • 生态系统
  • 它是如何工作的
  • 为什么使用它?
  • 替代品

Kafka简介

Apache Kafka是一个开源的事件流平台,用于流分析、数据管道、数据集成等。该平台在从制造业到保险业到电信业等各个行业的领先公司中普遍使用。

更具体地说,该软件是一个使用流处理的软件总线的框架实现。它是一个由Apache软件基金会开发的开源软件平台,用Scala和Java编写。

核心功能

Kafka的核心功能是。

  • 高吞吐量
  • 可扩展性
  • 永久存储
  • 高可用性

分解开来,Kafka允许我们首先发布和读取事件流。然后Kafa存储这些事件流,使我们能够实时或延迟地处理这些事件流。

什么是事件流?

以人类的中枢神经系统为例,这就是数字世界中的事件流。

事件流使我们能够从各种来源的混合体中实时捕捉数据,这些数据以后可以被用于以后的检索。

使用案例

事件流使用案例的行业范围内的例子。

  • 实时处理付款和交易
  • 从物联网设备和更多的地方持续捕获传感器数据
  • 通过卡车、货运车队等监控物流和运输。

使用Kafka的公司

该软件被超过60%的财富100强企业使用,包括Box、高盛、Costco、Target、Intuit、Cisco等。Apache Kafka最初是在LinkedIn开发的,最终分出了自己的平台。

用例:按公司划分

Kafka可用于视频流。像Pinterest这样的公司使用Kafka来处理印象、点击、特写和转发等事件。此外,像LinkedIn这样的公司也使用Kafka来监控、跟踪、新闻播报和流式数据。

生态系统

Kafka生态系统由Kafka Core、Kafka Streams、Kafka Connect、Kafka REST Proxy和schema Registry组成。Kafka在Java和Scala中的五个主要API是生产者API、消费者API、连接器API、流API和管理API。

  • 生产者API。将事件流发布到一个或多个Kafka主题。
  • 消费者API。允许我们读取主题并处理它们各自的事件流。
  • 连接器API。构建和运行导入和导出事件流的连接器,以便它们能够与外部应用程序和服务进行交互。
  • 流API。为开发用于流处理的应用程序和微服务提供便利。
  • 管理API。管理、经营和检查Kafka主题、经纪人和其他Kafka对象。

它是如何工作的

Kafka采用了一个服务器客户端的分布式系统,通过使用TCP/IP网络协议进行通信。该软件能够被部署在云环境以及裸机硬件上(以及更多)。

此外,Kafka还存储来自被称为生产者的进程的键值信息。这些数据,以键值消息的形式,然后可以根据用户的选择在不同的主题中进行划分。其他被称为消费者的进程就可以读取这些数据。

Kafka服务器可以覆盖多个数据中心以及云区域。这些服务器形成集群,并被设计成容错的,因此服务器的损失不会导致任何数据损失。此外,在内部,这些服务器中的一些被称为经纪人,形成了一个称为存储层的层。剩下的服务器就用来通过Kafka Connect导入和导出事件流。

Kafka客户端允许用户编写发布和读取事件流的应用程序,如核心能力部分所述。通过Kafka社区有很多客户端,用户可以使用Kafka流库来构建应用程序和微服务来管理Kafka集群(流处理)。

替代品

目前,Kafka的替代品包括RabbitMQ这样的平台。RabbitMQ使用一个消息队列,而不是Kafka的分区日志模型,后者结合了消息队列和发布订阅方法。此外,Kafka使用TCP协议,而RabbitMQ使用的插件MQTT和STOMP则支持高级消息队列协议。Kafka还支持消息被多个 "消费者 "读取,而在RabbitMQ上,消息在被消耗时被移除,这意味着消息不能被多个消费者接收。

通过OpenGenus的这篇文章,你一定对系统设计中的Apache Kafka有了深刻的认识。