数据对于企业发展变得越来越重要,为业务决策提供依据,企业应用产生各
种数据,包括系统运行日志、度量指标、响应消息、用户活动记录等,数据源多种多样,集成多种数据源,并且把数据快速移动到数据分析平台,是做好数据分析的前提。以数据为驱动的企业,数据管道是关键组件,如何移动数据,与数据本身一样重要。
1.1 发布订阅
数据不是由生产者直接发送给消费者,生产者(发布者)对消息分类,消费者(订阅者)订阅它们,以便接收特定类型数据,解耦发布者与订阅者。
演进过程:
未命名文件-3.png
1.2 Kafka
通用的发布与订阅消息系统,称为“分布式提交日至“和“分布式流平台”;文件系统和数据库提交日志提供所有日志的持久化纪录,重放日志以重建系统状态,Kafka数据也是按一定顺序持久化,可按需读取。
提供数据故障保护、性能伸缩
1.2.1 消息和批次
消息,由字节数组组成,可以有一个可选的元数据,即key,key也是字节数组,可通过key控制消息写入不同分区,如为key生成一致性hash值,使用该值按主题分区数取模,为消息选定分区。
批次,消息按批次写入broker,同一个批次写入同一主题同一分区,主要解决网络传输问题,单个消息穿行于网络会导致大量网络开销,所以消息分批次、压缩传输,提升数据传输和存储能力,后果是单个消息时延增长,且需要更多计算,需要平衡吞吐量与时延。
1.2.2 模式shema
消息只是单纯字节数组,可通过json xml作为消息格式,易读易用,缺点缺乏强类型处理能力,版本间兼容性不好,另avro,序列化框架,紧凑的序列化格式,消息与模式分开,模式变化,无需生成代码,支持强类型和模式进化,版本向前兼容,也向后兼容。
数据格式一致性消除了消息读写操作间的耦合,读写操作耦合,订阅者需升级才能同时处理新旧两种数据格式,订阅者升级后,才能升级发布者。定义良好的消息模式,放入公共仓库,有助于理解kafka消息格式。
1.2.3 主题和分区
消息通过主题分类,类似表或者文件夹,下面包含若干分区,一个分区就是一个提交日志,消息追加入分区,先入先出,无法保证整个主题消息有序,只保证单个分区消息有序,通过分区以及分区副本实现了数据冗余与伸缩性,不同副本在不通服务器。
网友评论