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.
工作原理
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.
相关文章推荐
- MD5加密操作
- 元素出栈、入栈顺序的合法性
- Linux下Shell编程实现基于Hadoop的ETL(导入篇)
- Spring 中 AbstractExcelView 支持根据模板生成Excel文件. 通过设置 view 的 URL 属性指定模板的路径
- Mysql海量数据--导入导出、备份恢复方法
- ArcGIS Runtime SDK for iOS(一) – 实现地图的不同点的callout展示
- 一个人的旅行
- eclipse配置jdk源码
- 根据二叉树的先序和中序序列画出二叉树的方法
- iOS开发-进阶:iOS调用WebService
- shell脚本,在不同目录下新建同名文件,并添加内容
- 测试DML语言
- zzuli 1728: 社交网络(求期望值)
- android 纯粹自定义控件 滑动开关
- HDU 1712 ACboy needs your help(简单01背包)
- 出于学习的目的,写了个桌面右键菜单
- CentOS 7搭建Grafana环境
- BOW 原理及代码解析
- hdu1114——Piggy-Bank(完全背包求最小价值)
- UITableView官方文档翻译