1):Apache kafka介绍及架构详解
假设一个场景:
数据源:
应用系统A 产生的用户访问数据和订单数据
10000 条一秒钟
push:推送数据
消息系统:队列 产生的数据量>数据量
pusll:拉取数据
消息系统kafka:
分布式系统队列系统
分布/订阅功能
不恰当比喻:
发布者来发布文章 -> 推送文章
微信公众号: 类似于 -Topic主题/类别
订阅者1
订阅则2
订阅则3
订阅则4
...订阅者 就能接受到这篇文章消息
kafka的功能:
-1:分布式消息Message系统(发布/订阅功能)
0.8.x功能
-2:Connector API
将Kafka Topics中的数据保存到RDBMS数据库中
0.9.x
-3:Stream Compute
可以对Kafka中的数据进行流实计算功能
0.10.x
SparkStreaming与kafka集成,使用的版本为0.8.2.x
kafka系统能够通过分布式提交日志处理数据,kafka中topics用户
定于的一个类别
Kafka Cluster:
- 消息系统,储存数据
提交日志格式文件
- 分布式:
有多台数据,进行储存数据
- Topic
储存某一类的数据(消息),类比于微信公众号
储存数据类似于HDFS
-i,按照分区partition储存
相当于文件夹下面有很多文件
-ii,分区数据有多个副本
replications(每个数据有3个副本)
- 分布/订阅
消费者(用户)可以订阅Topic(类比于关注某个微信公众号)
只要生产者向Topic发送数据,订阅者就可以自动接受到数据
进行处理
一个典型的Kafka集群中包含若干个Producer,(Kafka支持水平扩展,一般Broker
数量越多,集群吞吐率越高),若干个Consumer Group,以及一个Zookeeper集群
Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化
时进行reablance。
Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅
并消费消息
TOPIC & PARTITION
一个Topic分为多个Partition来进行数据管理
一个Partition中的数据是有序,不可变的
使用偏移量(offset)唯一标识一条数据,是
一个long类型的数据;
Partiton接受到producer发送过来数据后,会
产生一个递增的offset偏移量数据,同是将数
据保存到本地的磁盘文件中(文件内容追加
的方式写入数据)
基本懂得Kafka流程,搭建起来很简单
内容来源于网络如有侵权请私信删除
- 还没有人评论,欢迎说说您的想法!