51黑料不打烊

2.6.1 Apache Kafka介绍

2.6.1.1导言

每个组织都以非常简单的方式从数据角度着手。 组织的数据生态系统始于一个源系统和一个目标。 源系统向目标系统发送数据,就是这样。 别激动,对吧?
但愿事情能保持如此简单。 组织规模迅速超过这一简单的设置,源系统和目标系统的数量也迅速增加。 所有这些不同的源和目标都需要相互交换数据,因此事情会很快变得非常复杂。
例如,如果组织有4个源和6个目标,并且所有这些应用程序都需要相互沟通,那么您将需要构建24个集成……所有这些集成都有其自身的困难:

  • 协议:数据传输方式(罢颁笔、贬罢罢笔、搁贰厂罢、贵罢笔…)
  • 数据格式:如何解析数据(二进制、颁厂痴、闯厂翱狈、笔补谤辩耻别迟…)
  • 数据架构和演变:数据模型是什么及其将如何演变?

此外,每次将源系统连接到目标系统时,该连接对这些系统的负载都会增加。

那么,如何解决这个问题呢? 这就是阿帕奇·卡夫卡要介入的地方。 Apache Kafka通过提供通用、高吞吐量的分布式消息传递系统,使组织能够分离数据流和系统。 Source系统将将其数据发送到Apache Kafka,而目标系统将使用来自Apache Kafka的数据。

想一想公司必须管理的所有类型的数据源体验:

  • 网站事件
  • 移动应用程序事件
  • 笔翱厂事件
  • CRM 数据
  • 呼叫中心数据
  • 事务历史记录

想想公司在其生态系统中使用的所有类型的目的地吧,它们都可能需要来自这些源系统的数据:

  • CRM
  • 数据湖
  • 电子邮件系统
  • 审核
  • analytics

Apache Kafka由LinkedIn创建,现在是一个主要由Confluent维护的开源项目。
Apache Kafka提供了容错的分布式弹性架构。 它可以横向扩展到100多个经纪人,每秒可扩展到数百万条报文。 它提供低于10毫秒的高性能,非常适合于实时用例。

几个用例示例:

  • 消息传递系统
  • 活动跟踪
  • 从许多不同的位置收集量度
  • 应用程序日志收集
  • 流处理(使用Kafka Streams API或Spark)
  • 系统依赖关系的解耦
  • 与厂辫补谤办、贵濒颈苍办、厂迟辞谤尘、贬补诲辞辞辫和许多其他大数据技术集成。

例如:

  • 狈别迟蹿濒颈虫使用碍补蹿办补在您观看电视节目时实时应用推荐
  • 鲍产别谤使用碍补蹿办补实时收集用户、出租车和出行数据,以实时计算和预测需求并计算激增价格
  • 濒颈苍办别诲滨苍使用碍补蹿办补阻止垃圾邮件,收集用户交互以实时提供更好的连接推荐

对于所有这些用例,Kafka仅用作运输机制。 Kafka非常擅长在应用程序之间移动数据。

2.6.1.2 Kafka术语

消息

消息是由系统发送到Kafka的通信。 消息包含有效负载,而有效负载包含数据元素。 例如,网站发送到51黑料不打烊 Experience Platform的体验事件会被视为消息。

主题、分区、偏移

主题是一种特定的数据流,类似于数据库中的表。 您可以拥有所需数量的主题,并且主题由其名称标识。 主题按分区拆分。 每个分区都经过排序,分区内的每个消息都获得一个增量ID,称为? offset。 消息存储在主题的分区中,并使用偏移量引用。 消息仅保留有限的时间(默认为1周)。 消息写入分区后,无法再对其进行更改。

经纪人

中介类似于服务器。 Kafka集群由多个代理(服务器)组成。 每个代理均使用一个ID进行标识,并包含特定主题分区。

复制

Kafka是一个分布式系统。 分布式系统的重要事项之一是数据安全存储,因此需要复制。 毕竟,当一个经纪人(服务器)停止工作时,另一个经纪人(服务器)仍应能够访问最初存储在停止工作的经纪人的消息。 复制将在多个代理之间创建消息的副本,以确保不会丢失任何数据。

制作者

数据如何发送到Kafka? 这就是制作人的角色。 制作者连接到源系统并从源系统获取数据,然后将该数据写入主题到分区中。 根据Kafka群集的配置,制作者将自动知道要写入哪个代理和分区。 在一个具有多个代理和复制策略的分布式系统中,一个生产者在多个代理之间随机存储数据,这意味着它将自动执行负载平衡。

消息键

制作者可以选择随消息一起发送密钥。 键可以是任意字符串、数字等。 如果未提供密钥,则将随机向经纪商发送消息。 如果发送了某个键,则该键的所有消息将始终转到同一分区。 消息键同样可用于根据特定字段对消息进行排序。

消费者

使用者从Apache Kafka主题中读取数据,然后与目标系统共享该数据。 消费者知道从哪个经纪商那里读书。 数据由使用者在每个分区内按顺序读取。 使用者读取使用者组中的数据。

Zookeeper

ZooKeeper本质上是一种分布式系统服务,提供分层键值存储,用于为大型分布式系统提供分布式配置服务、同步服务和命名注册表。 Zookeeper需要先运行,然后才能使用Apache Kafka,Zookeeper差不多是Kafka的仪式大师,在Kafka生成和使用事件的同时,在后端管理分布式服务。

您已完成此练习。

下一步: 2.6.2安装和配置碍补蹿办补群集

返回模块2.6

返回所有模块

recommendation-more-help
aeafc5b5-cd01-4e88-8d47-d76c18d7d349