kafka

222 阅读2分钟

在之前公司都是使用开源的组件,后来来到现在公司都是采用自研的组件。之前用过0.10版本的kafka,但是一直没有时间系统学习kafka的原理和查看相关的源代码,在此做个记录,立个flag。 主要内容来源自 《图文详解kafka源码设计与实现》以及github上的kafka源码。

01 kafka入门

01.1 kafka流式数据平台

  1. 消息系统: kafka利用消费组的概念统一了队列和发布订阅两种消息模型。kafka使用队列模型时,可以将处理工作平均分配给消费组中的消费者成员;使用发布订阅时,可以将消息广播给多个消费组。采用多个消费组结合多个消费者,既可以线性扩展消息的处理能力,也允许消息被多个消费组订阅。
  2. 存储系统: 数据写入kafka集群的服务器节点时,还会复制多份来保证出现故障时仍能可用。为了保证消息的可靠存储,kafka还允许生产者的生产请求在收到应答之前,阻塞式地等待一条消息,直到它完全地复制到多个节点上,才认为这条消息写入成功。
  3. 流处理系统: 对于简单的数据处理,可以直接使用kafka的生产者和消费者API完成;kafka流处理为开发者提供了完整的流处理API,比如流的聚合、连接、各种转换操作。同时,kafka流处理框架内部解决很多流处理应用程序都会面临的问题;处理乱序或迟来的数据、重新处理输入数据、窗口和状态操作等。