1. Integration

1.1. Integration Challenge

DataIntegrationChallenge
  • Kafka作为数据集成层,数据源将其数据发布到Kafka,目标系统从Kafka获取数据,
    这将源数据流和目标系统解耦,从而实现简化的数据集成解决方案;

1.2. Kafka to Rescue

DataIntegrationSolution

1.3. Data Stream

  • 数据流通常被认为(typically thought of)是
    潜在无限的数据序列(potentially unbound data sequence);

  • 数据流的数据吞吐量变化很大:有些流每秒会接收数万条记录,有些流每小时会接收一到两条记录;

  • kafka用于存储这些数据流(也称主题),然后允许系统执行流处理,
    对可能无穷无尽且不断发展的数据源执行连续计算的行为;

  • act of performing continual calculation on potentially
    endless and constantly evolving source of data;

  • 一旦流被处理并存储在kafka中,它就可传输到另一个系统,如数据库;

KafkaStream

2. Core Definition

2.1. Topic

  • 主题组织事件(event),如日志主题,其中包含来自应用程序的日志;

  • 主题大致类似于SQL表,主题不可查询(queryable),须创建生产者和消费者来利用数据;

  • 主题中的数据以键值形式的二进制格式存储;

Topic

2.2. Producer

  • 创建主题后,下一步是将数据发送到该主题中,将数据发送到主题的应用程序称为生产者;

  • 向Kafka生成事件的方法很多,但应用程序通常与Java等语言的Kafka客户端集成;

  • 生产者部署在Kafka外部,仅通过将数据直接发送到主题来与Kafka交互;

2.3. Consumer

  • 创建主题并将数据生成到主题后,可以拥有利用数据流的应用程序;

  • 从一个或多个主题提取事件数据的应用程序称为消费者;

  • 使用Kafka事件的方法有很多,但应用程序通常与Java等语言的客户端库集成;

  • 注:消费者部署在Kafka外部,仅通过直接从主题读取数据来与Kafka交互;

  • by default:consumer only consume data that was
    produced after consumer first connect to topic;

3. Eco

3.1. Kafka Stream

  • 将外部系统的数据生成到Kafka中,可使用Kafka Stream流处理,
    对流数据存储来提供实时分析;

  • 如微信过滤点赞数超过100的信息,计算每一分钟每个主题签收到的信息数量,
    将两者结合,即可实现热门主题(topic)和标签(hashtag);

  • kafka可执行主题级转换(topic-level transformation),
    可使用适用于此用例的流库,而不是编写复杂的生产者和消费者代码;

  • 同类流处理框架如:kafka stream,spark,flink;

KafkaStreamCase

3.2. Kafka Connect

KafkaConnector
  • Kafka Connect Source Connector(Producer)

  • Kafka Connect Sink Connector(Consumer)

3.3. Schema Registry

  • schema registry有助于在kafka中注册数据模式(register data schema),
    并确保生产者和消费者在演变(evolving)过程中相互兼容(compatible);

  • schema registry支持json,protobuf,avro模式的数据格式;

  • data schema为我们的数据定义预期字段,字段名称,和值类型;
    expect field,field name,field value type;

  • 若每schema registry,当data schema发生更改时,
    生产者和消费者面临奔溃风险(breaking risk)

3.4. Ksql

Ksql
  • Ksql是流处理数据库,提供类SQL的接口来转换主题,并执行常见的类似数据库的操作,
    如对流数据联接join、聚合aggregate、过滤filtering和其它的数据操作;

  • Ksql Web服务器将SQL命令转换为一系列Kafka Stream应用程序;

4. Roundup

KafkaRoundup