深入理解kafka设计与原理
PS:
设计
动机
- 它必须具有高吞吐量才能支持大容量事件流,例如实时日志聚合。
- 它需要妥善处理大量积压数据,以便能够支持离线系统的定期数据加载。
- 这还意味着系统必须处理低延迟交付,以处理更传统的消息传递用例。
- 我们希望支持这些提要的分区、分布式、实时处理,以创建新的派生提要。这激发了我们的分区和消费者模型。
- 最后,在将流输入其他数据系统进行服务的情况下,我们知道系统必须能够在出现机器故障时保证容错。
持久化
> 事实上,磁盘比人们预期的要慢得多,也要快得多,这取决于它们的使用方式;设计得当的磁盘结构往往可以和网络一样快。
效率优化
- 批处理
- 较大块的内容存取
- 零copy
- 数据压缩
- 日志压缩
- 异步落盘