初始Kafka
1. Kafka是什么?
Kafka是Linkedin公司开发,是一个分布式,支持分区(Partition)、多副本(Replica),基于Zookeeper协调的分布式消息系统,目前kafka的定位是一个分布式流式处理平台。
Kafka扮演着三大角色:
- 消息系统:Kafka和传统的消息统统都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能
- 存储系统:Kafka的消息持久化和多副本机制,可以将Kafka作为长期的数据存储系统来使用
- 流式处理平台:Kafka还为每个流行的流式处理框架提供了可靠的数据来源,完整的流式处理类库等
2. Kafka的一些使用场景
- 日志收集:kafka可以收集各种服务log,以统一接口服务的方式开放给各种Consumer,比如:hadoop、hbase、solr等
- 消息系统:Kafka是一个异步通信系统,解耦生产者和消费者、可持久化缓存消息等
- 用户活动跟踪:记录web或app用户的各种活动,将这些活动信息发布到Kafka的Topic中,订阅者通过订阅这些Topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘
- 运营指标:Kafka也经常用来记录运营监控数据,包括收集各种分布式应用的数据,比如报警和报告
3. Kafka体系结构
4. Kafka基本概念
名称 | 解释 |
---|---|
Broker | 消息中间件处理节点,Broker 可以简单地看成一个独立的kafka服务节点或Kafka实例,一个或多个Broker 组成kafka集群 |
Topic | kafka根据topic对消息进行分类,生产者发布到kafka中的消息都要指定Topic,消费者订阅topic并消费消息,topic是一个逻辑上的概念 |
Producer | 消息生产者,向Broker发送消息的客户端 |
Consumer | 消息消费者,采用Pull的方式向Broker获取消息的客户端 |
ConsumerGroup | 消费者组,一条消息可以被不同的ConsumerGroup消费,但是一个ConsumerGroup中只能被一个consumer消费该消息 |
Partition | 分区,物理上的概念,一个Topic中可以分成多个Partition,每个partition内部消息是有序的,同一个Topic下不同分区包含的信息是不同的,分区可分布在不同的Broker中 |
Replica | 多副本,同一个分区保存着多副本消息,从而提升容灾能力,副本之间是“一主多从”关系,lead副本负责处理读写请求,follower副本负责与leader副本的消息同步 |