(一)什么是Kafka
基于发布-订阅的消息引擎系统。
(二)kafka的基本术语
1、对消息的认识:
(1)消息:kafka中的数据单元被称为消息,也被称为‘记录’,可以把它看作数据库表中某一行的记录。
(2)副本(replica):kafka中消息的备份又叫做副本(replica),副本的数量是可以配置的,kafka定义了两类副本:领导者副本(leader replica)和追随者副本(follower replica),前者对外提供服务,后者只是被动跟随。
(3)批次:为了提供效率,消息会分批次写入kafka,批次就代指的是一组消息。
(4)主题(topic):消息的种类称为主题(topic),可以说一个主题代表了一类消息。相当于是对消息进行分类。主题就像是数据库中的表。
(5)分区(partition):主题可以被分为若干个分区(partition),同一个主题中的分区可以不在同一个机器上,有可能会部署在多个机器上,由此来实现kafka的弹缩性,单一主题中的分区有序,但是无法保证主题中所有的分区有序。
2、对生产者和消费者的认识:
(1)生产者:向主题发布消息的客户端应用程序称为生产者(producer),生产者用于持续不断的向某个主题发布消息。
(2)消费者:订阅主题消息的客户端程序称为消费者(consumer),消费者用于处理生产者产生的消息。
(3)消费者群组:生产者与消费者的关系就如同餐厅中的厨师和顾客之间的关系一样,一个厨师对应多个顾客,也就是一个生产者对应多个消费者,消费者群组(consumer group)指的就是由一个或多个消费者组成的群体。
3、三节点的kafka集群
(1)broker:一个独立的kafka服务器就被称为broker,broker接受来自生产者的消息。
(2)Broker集群:broker是集群的组成部分,broker集群由一个或多个broker组成,每个集群都有一个broker同时充当了集群控制器的角色(自动从集群的活跃成员选举出来)
kafka架构:
(三)kafka特性
1、消息发送的特性
(1)高吞吐、低延迟:kafka最大的特点就是收发消息非常快,kafka每秒可以处理几十万条消息
(2)高并发:支持数千个客户端同时读写。
2、数据的存储特性
(1)持久性、可靠性:kafka能够允许数据的持久化存储,消息被持久化到磁盘,并支持数据备份防止数据丢失,kafka底层的数据存储是基于zookeeper存储的,zookeeper的数据能够持久化存储。
3、可靠性:
(1)容灾性:允许集群中的节点失败,某个节点宕机,kafka集群能够正常工作。
-
(四)kafka的使用场景
(1)传递消息:kafka另外一个基本用户是传递消息,应用程序向用户发送通知就是通过传递消息来实现的,这些应用组件可以生成消息,而不需要关心消息的格式。
(2)网页活动跟踪:kafka可以用来跟踪用户行为,比如我们经常会去淘宝购物,你打开淘宝的那一刻,你的登录信息,登录次数都会作为消息传输到kafka。
(3)限流削峰:kafka多用于互联网领域某一时刻请求特别多的情况下,可以把请求写入到kafka中,避免直接请求后端程序导致服务崩溃。
(五)kafka的消息队列
kafka的消息队列一般分为两种模式:点对点模式和发布订阅模式。
kafka是支持消费者群组的,也就是说kafka中会有一个或者多个消费者,如果一个生产者生产的消息有一个消费者进行消费的话,那么这种模式就是点对点模式。
如果一个生产者或者多个生产者产生的消息能够被消费者同时消费的情况,这样的消息队列成为发布订阅模式的消息队列。