Kafka介绍
Kafka是一个分布式,分区的,多副本的,多订阅者的日志系统,可以用于搜索日志、监控日志、访问日志。
生产者(producer):producer主要用于生产消息,生产的消息通过topic进行归类,保存到kafka的broker里面去。
主题(topic):
1.kafka将消息以topic为单位进行归类;
2.topic特指kafka处理的消息源(feeds of meaaages)的不同分类;
3.kafka主题始终支持多用户订阅;
4.在kafka集群中,可以有无数的主题;
5.生产者和消费者消费数据一般以主题为单位。更细粒度的划分可以到分区级别。
分区(partition):topic是消息的归类,一个topic可以有多个分区,每个分区保存部分topic数据,所有partition当中的数据全部合并起来,就是一个topic当中的所有数据。在一个broker服务下,可以创建多个分区。每个分区内的数据是有序的,但全局数据不能保证有序。
消费者(consumer):主要用于消费kafka的当中的数据,消费者一定归属某个消费组。
消费者组(consumer group):消费者组由一个或多个消费者组成,同一个组的消费者对于同一条消息只消费一次;每个消费者都属于某个消费者组,如果不指定,那么所有的消费者都属于默认的组;每个消费者组都有一个ID,即group id。组内的所有消费者协调在一起来消费一个订阅主题的所有分区。每个分区只能由有个消费者组内的一个消费者消费,可以由不同的消费者组消费;分区数量决定了每个消费者组中并发消费者的最大数量。
应用场景:指标分析;日志聚合解决方法;流式处理
消息系统:Kafka和传统的消息系统都具备系统解耦、冗余存储、流量消峰、缓冲、异步通信、扩展性、可恢复性等功能。Kafka还提供了大多数消息系统难以实现的消息顺序性保障以及回溯消费的功能。
存储系统:Kafka把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。得益于多副本机制。
流式处理:Kafka不仅为每个流式处理框架提供了可靠的数据来源,还提供了一套流式处理类库,比如窗口、连接、变换和聚合等各类操作。