Kafka介绍
Kafka是一个分布式 支持分区(partition) 多副本(replica) 基于zookeeper协调分布式消息系统
它最大特性就是可以实时的处理大量数据
kafka特性
高吞吐 低延迟
每个topic可以分为多个partition, consumer group 对partition进行consume操作
可扩展性: 支持集群
持久性:消息持久到硬盘
容错性:允许集群节点失败
高并发:支持数千个客户端同时读写
生产者客户端是线程安全的,但是消费者客户端是非线程安全的,每次操作时都会调用accqure方法用来确定当前只有一个线程操作,如果有多个线程在操作,会抛出CME异常。
可以使用一个线程去消费,拿到消息在交到线程池去处理。
Kafka 存储策略
kafka以topic进行消息管理,
每个topic包含多个partition,
每个partition对应一个log,有多个segment组成
每个segment存储多条消息,
消息id由逻辑位置决定,可以直接从消息id定位到存储位置
每个part在内存中对应一个index 记录每个segment中的每一条消息偏移
发布者发到topic消息
会被均匀分布到part上,broker收到发布消息往对应part最后一个segment上添加消息。
当某个segment上的
消息数达到配置值或发布时间超过配置时,segment上消息会持久到硬盘上。
segment达到一定大小
将不会在往segment写数据
,broker会创建
新的segment
Kafka 架构
话题: topic
生产者: 能够
生产消息
服务代理: 已发布的消息保存在一组服务器中 他们被
成为代理
消费者: 可以订阅一个或多个topic 并从broker拉数据,并且消费消息
一个topic可以配置多个分区,一个topic 对应一个消费组,topic下的每个分区对应一个消费者,使用负载均衡算法消费