您的位置:首页 > 其它

Kafka基本概念

2016-04-13 15:39 253 查看
是一个分布式、可分区、可复制的消息系统,主要用于处理活跃的流式数据。

工作原理
Kafka的设计初衷是希望作为一个统一的信息收集平台,能够实时的收集反馈信息,并需要能够支撑较大的数据量,且具备良好的容错能力

Kafka中的zookeeper的用途
正如zookeeper用于分布式系统的协调和促进,Kafka使用也是基于这一原因,zookeeper用户管理、协调Kafka代理

基本特性
可扩展 在不需要下线的情况下可以进行扩容;数据流分区(partition)存储在多台机器上
高性能 单个broker就能服务上千个客户端;单个broker每秒钟可读写每秒几百兆字节;多个brokers组成的集群将达到非常强的吞吐能力;性能稳定,无论数据量多大
持久存储 存储在磁盘上;冗余备份到其他服务器上以防数据丢失

消息格式
一个topic对应一种消息格式,因此消息用topic分类
一个topic代表的消息有一个或者多个partition(s)组成
一个partition中
*一个partition应存放在一到多个server上
。如果只有一个server,就没有冗余备份,是单机而不是集群
。如果有多个server
. 一个server为leader
. 其他server为follows
.leader需要接收读写请求
.follows仅作冗余备份
.leader出现故障,会自动选举一个follow作为leader,保证服务不中断
.每个server都可能扮演一些partitions的leader和其他partitions的follow角色,这样整个集群就会达到负载均衡的状态
*消息按顺序存放
*消息顺序不可变
*只能追加消息,不能插入
*每个消息都有一个offset,用作消息ID,在一个partition中唯一
*offset由consumer保存和管理,因此读取顺序实际上是完全由consumer决定的,不一定是线性的
*消息有超时日期,过期则删除

生产者 producer
*生产者将消息写入kafka
*写入要制定topic和partition
*消息如何分发到不同的partition,算法由producer决定

消费者 consumer
*读取消息并作处理
*consumer group

- 这个概念的引入为了支持两种场景:每条消息分发一个消费者,每条消息广播给所有消费者
- 多个consumer group订阅一个topic,该topci的消息广播给所有consumer group
- 一条消息发送到一个consumer group后,只能由该group的一个consumer接收和使用
- 一个group中的每个consumer对应一个partition可以带来如下好处

@可以按照partition的数目进行并发处理
@每个partition都只有一个consumer读取,因而保证了消息被处理的顺序是按照partition的存放顺序进行,注意这个顺序受到producer存放消息的算法影响

kafka是分布式架构,producer、broker(Kafka)和consumer都可以有多个。Kafka的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。几个基本概念:

(1)message(消息)是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。如果consumer订阅了这个主题,那么新发布的消息就会广播给这些consumer。

(2)Kafka是显式分布式的,多个producer、consumer和broker可以运行在一个大的集群上,作为一个逻辑整体对外提供服务。对于consumer,多个consumer可以组成一个group,这个message只能传输给某个group中的某一个consumer.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: