Kafka是由LinkedIn公司采用Scala语言开发的一个多分区、多副本的分布式消息系统,它以高吞吐、可持久化、可水平拓展、支持流数据处理等特性被广泛使用。
Kafka越来越受青睐,它在我们使用中主要“扮演”了三大角色:
- 消息系统:Kafka和传统的消息系统都具有系统解耦、冗余存储、流量削峰、缓冲、异步通信、拓展性、可恢复性等功能。此外,Kafka还提供了大多数消息系统难以实现的顺序消息及可回溯消息的功能。
- 存储系统:Kafka把消息持久化道磁盘,相比其他基于内存的系统而言,降低数据丢失的风险。得益于Kafka的消息持久化功能和多副本机制,可以把Kafka作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可。
- 流式处理平台:Kafka不仅为威哥留下的流失处理框架提供可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。
基本概念
Kafka体系引入了3个术语:
- Producer:生产者,也就是消息发送方。生产者负责创建消息,然后将其投递到kafka中,进行相应的业务逻辑处理。
- Consumer:消费者,也就是消息接收方。消费者连接到Kafka上并接受消息,进行相应的业务逻辑处理。
- Broker<