一、数据湖背景中的消息层
1、消息层
- 数据湖中的消息层应该具有以下功能:
- 该层的一项核心功能是对源头和终端进行解耦
- 能够处理来自应用服务器节点每秒几百MB的高速信息流
- 能够处理TB甚至PB级数据
- 能够低延迟、高吞吐的处理消息
- 能够保证信息按照时间有序传输向多个消费者传递相同消息的能力。
- 能够对运营统计数据进行分析,聚合来自不同数据源的数据并分析
- 借助廉价硬件实现高性能
- 能够实现最低程度的数据增加与转换
2、技术路线图
3、什么是Apache Kafka
详情见wiki百科,Apache Kafka
简述一下吧:ApacheKafka就是一个提供了一个中间层,解耦了数据源和数据消费者,同时提供消息层应有的数据处理能力。
二、为什么使用ApacheKafka
1、Kafka简史
Kafka最初是由LinkedIn的一个工程团队开发的,随后在2011年初,作为Apache软件基金会的一个开源项目发布。kafka是linkedin的消息传输平台。该项目于2012年升级为Apache顶级项目。
2、kafka的优势
- 高吞吐
- 低延迟
- 容错性
- 可伸缩性
- 分布式
- 消息分发能力
- 高并发
- 默认持久性
- 对消费者友好
- 批量处理能力
- 能够处理数据湖通常需要的各种用例
- 专为用于商用软件设计
- 有助于对数据处理流水线解耦
- 有助于实时处理数据数据流水线
- 开源,且有非常活跃的社区
- 能够与spark很好的协作
- 为了将消息流式传输给消费者,可以通过操作系统的特性进行提速
3、kafka的劣势
- 没有一整套管理和监控工具
- broker会使用某些系统调用想consumer传递消息,如果对消息进行处理,则会降低系统性能
- kafka仅匹配确切的topic名称,不支持通配符匹配
- 其他语言所需的api由不同的个人或企业维护,可能导致问题的出现
- kafka的broker及其方法往往被认为过于简单。不利于部署和维护
- 本质上,kafka不关心消息大小,但是当其过大时,将会影响内存使用效率,吞吐量和性能
- 随着集群规模的提升,性能和反应速度会下降
- 缺乏对消息系统范式的支持,如请求,响应、点对点对列等