Kafka入门初探+伪集群部署
Kafka是目前非常流行的消息队列中间件,常用于做普通的消息队列、网站的活性数据分析(PV、流量、点击量等)、日志的搜集(对接大数据存储引擎做离线分析)。
全部内容来自网络,可信度有待考证!如有问题,还请及时指正。
概念介绍
在Kafka中消息队列分为三种角色:
producer,即生产者,负责产生日志数据。broker,存储节点,负责按照topic中的partition分区,均匀分布式的存储分区。consumer,即消费者,负责读取使用broker中的分区。
producer
Kafka系统中的生产者,用于产生数据并发送给broker进行存储。由于需要与broker中的分区保持socket连接,因此需要在zk中维护生产者与分区broker的对应关系。同一个topic下的数据,会以某种负载均衡的方式发送到不同的分区中。
broker
Broker可以当做Kafka中的存储节点,数据按照topic组织,按照某种负载均衡方式分配到不同的分区中。一个Topic由多个分区组成,每个分区可以设置备份数量。分区由一个leader+多个followers组成,生产者直接与leader进行沟通,leader接收消息后,其他的followers会同步这个消息。所有的follwers同步消息后,该消息才会成为可消费的状态。
Broker中Topic与分区,分区与生产者,分区之间的选举备份等等信息都需要ZK进行协调。
consumer
Consumer是Kafka中的消费者,通常以组的形式存在,一个Group会包含多个Consumer。每个组对应一个Topic,该Topic内的分区只能对应一个消费者,也就是如果消费者很多的情况下,会出现有的消费者消费不到数据;如果消费者很少的情况下,会有消费者同时消费多个分区的数据。
Kafka仅仅会保证一个分区的消息的消费是有序的,多个分区并不保证有序性。
为了保证数据消费的可靠性,Kakka提供了几种消费的机制:
- 1 at most once,即消费数据后,保存offset,就再也取不到这个数据了。
- 2 at least once,即消费数据后,保存offset,如果保存出错,下次可能还会取到该数据
- 3 exactly once,待查阅
在Kafka中offset是由consumer维护的(实际可以由zk来完成)。这种机制有两个好处,
- 一个是可以依据consumer的能力来消费数据,避免产生消费数据的压力;
- 另一个就是可以自定义fetch消费的数据数目,可以一次读取1条,也可以1次读取100条。
topic
Kafka中的数据的主题,所有的操作(如消息的存储和读取\消费)都是依据topic完成。
partition
每个Topic由多个分区组成,每个分区内部的数据保证了有序性,即是按照时间序列,append到分区的尾部。分区是有固定大小的,容量不够时,会创建新的分区。Kafka在一定时间内会定期清理过期的文件。
这种连续性的文件存储,一方面有效的利用磁盘的线性存取;另一方面减轻了内存的压力。
zookeeper
在Kafka中很多节点的调度以及资源的分配,都要依赖于zookeeper来完成。
如:
- 1 Broker的注册,保存Broker的IP以及端口;
- 2 Topic注册,管理broker中Topic的分区以及分布情况
- 3 Broker的负载均衡,讲Topic动态的分配到broker中,通过topic的分布以及broker的负载判断
- 4 消费者,每个分区的消息仅发送给一个消费者(不知道跟zookeeper有啥关系)
- 5 消费者与分区的对应关系,存储在zk中
- 6 消费者负载均衡,一旦消费者增加或者减少,都会触发消费者的负载均衡
- 7 消费者的offset,High level中由zk维护offset的信息;Low Level中由自己维护offset
伪集群环境的搭建
部署伪集群环境,即单节点环境非常简单。下载部署文件,解压后,直接运行即可。
运行命令如下:
# 启动zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties &
# 启动kafka
bin/kafka-server-start.sh config/server.properties &
如果想要测试,可以启动测试程序:
# 启动生产者测试程序
./kafka-console-producer.sh --broker-list localhost:9092 --topic test
# 启动消费者测试程序
./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
在生产者界面输入的内容,就可以直接在消费者界面中看到了。
Kafka入门初探+伪集群部署的更多相关文章
- zookeeper的单实例和伪集群部署
原文链接: http://gudaoyufu.com/?p=1395 zookeeper工作方式 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现 ...
- kafka学习总结之集群部署和zookeeper
1. 集群部署 kafka集群的瓶颈主要在网络和磁盘上:kafka依赖于zookeeper,zookeeper集群的节点采用奇数个,3个节点允许一个节点失败,5个节点允许2个节点失败. 图 1 ka ...
- ActiveMQ伪集群部署
本文借鉴http://www.cnblogs.com/guozhen/p/5984915.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在 ...
- zk伪集群部署
jdk 配置 # tar xf jdk-8u161-linux-x64.tar.gz -C /usr/local/ # vim /etc/profile.d/jdk.sh export JAVA_HO ...
- Solrcloud单机伪集群部署
线上有一套双节点的Solrcloud节点,因机器性能较老,环境搭建于2013年,原节点有数百个已经被unload的collections,考虑以后可能还会需要,所以搭建一套和原节点相同的solrclo ...
- Hadoop伪集群部署
环境准备 [root@jiagoushi ~]# yum -y install lrzsz 已加载插件:fastestmirror Repository 'saltstack-repo': Error ...
- 6.在单机上实现ZooKeeper伪机群/伪集群部署
转自:https://blog.csdn.net/poechant/article/details/6633923
- 伪集群zookeeper模式下codis的部署安装
1,zookeeper伪集群部署 部署在192.168.0.210服务器上 下载 去官网将3.4.6版本的zookeeper下载下来到/app目录下解压 首先 ...
- zookeeper的安装与部署-伪集群
1.Zookeeper的下载与解压 通过后面的链接下载Zookeeper: Zookeeper下载在此我们下载zookeeper-3.4.5下载后解压至安装目录下,本文我们解压到目录:/ ...
随机推荐
- liunx 字符编码问题
查询当前服务器的编码:echo $LANG 设置服务器的编码:LANG=en_US.UTF-8
- 一些不起眼但非常有用的 Vim 命令
保存文件并退出 说起来有些惭愧,我也是最近才学到这个命令
- 最新基于adt-bundle-windows-x86的android开发环境筹建
最新基于adt-bundle-windows-x86的android开发环境搭建 某系统要配套做一个android客户端,来一次android开发环境快速搭建,系统Win7,具体步骤如下: 1.下载j ...
- 敏捷开发方法-Scrum
为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资 ...
- zmq中zmq_poll()函数介绍
功能: 查看指定的多个socket上哪些socket发生了指定的事件, 事件有: ZMQ_POLLIN: 有消息到来 ZMQ_POLLOUT: 当前无阻塞可以发送消息 ZMQ_POLLERR: 只对标 ...
- linux mysql
安装mysql 1.使用rpm 安装mysql 或者使用yum安装 使用rpm 安装 下载 Centos 7 所需要的mysql包 tar -xf 解压整合包 根据依赖 安装 common>li ...
- [UE4]Animation Techniques used in Paragon部分翻译及索引
视频地址:https://www.youtube.com/watch?v=1UOY-FMm-xo 主要内容:该视频由Paragon游戏制作者Laurent Delayen(Senior Program ...
- java基础3_流程控制语句
一 条件判断 1. 条件运算符(三元表达式) ,其形式为: type d = a ? b : c; 具体化形式为:int d = 2 < 1 ? 3 : 4; 2. 轻量级的文本编辑器:Ultr ...
- poj 3621 二分+spfa判负环
http://poj.org/problem?id=3621 求一个环的{点权和}除以{边权和},使得那个环在所有环中{点权和}除以{边权和}最大. 0/1整数划分问题 令在一个环里,点权为v[i], ...
- 在chrome下的文本框sendkeys,提示element can't focus--解决方法
在chrome下的文本框sendkeys,提示element can't focus--解决方法(成都-半步流雲,群友解决) 成都-半步流雲1.升级你的chromedriver,2.降chrome版本 ...