kafka 是一款基于发布订阅的消息系统,Kafka的最大的特点就是高吞吐量以及可水平扩展, Kafka擅长处理数据量庞大的业务,例如使用Kafka做日志分析、数据计算等。 <!--more-->
kafka 的运行依赖于 zookeeper,它的安装相对于 rabbitMQ来说比较简单。下面介绍Windows下 kafka的安装及其使用。
kafka是依赖于zookeeper的,所以我们先要安装zookeeper ,当然kafka的二进制包里面,包含了zookeeper 的安装包,我们不需要单独的再去下载ZK的安装包;
在 kafka 官网下载 二进制的 tgz 压缩包: http://kafka.apache.org/downloads.html,解压后它的 bin/windows下有 zk的启动脚本和kafka的启动脚本, zk的配置文件和kafka的配置文件在 config文件夹下,分别对应 zookeeper.properties和server.properties。 由于本人对zk使用的频率也比较高,因此我是单独安装的zk。
下面我们对kafka进行配置及启动,配置文件说明:
# 对外暴露的服务端口 advertised.listeners=PLAINTEXT://ip:9092 # 机器的标识 broker.id=1 # kafka日志存储的位置 log.dirs=c:xxx # zk的地址 zookeeper.connect=localhost:2181
启动脚本:
.\bin\windows\kafka-server-start.bat .\config\server.properties
接下来我们做一下简单的测试。
执行脚本
.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
该操作创建了一个 名为 test 的 kafka 主题,接下来我们可以在主题中写入消息并消费消息了。
执行脚本
.\bin\windows\kafka-console-producer.bat --broker-list 127.0.0.1:9092 --topic test xxx xxx
该操作创建了一个消息生产者,并发送消息 "xxx"
执行脚本,消费消息:
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning ?
消息队列一般包含两种模式,一种是点对点的模式,一种是发布订阅的模式。前文提到过 kafka 是一款基于发布订阅的消息队列。 那么kafka是怎么去发布消息,怎么去保存消息,订阅消息的呢?首先我们从kafka的发布订阅模型开始分析。 <!--more--> 下图为kafka的发布订阅模型:
kafka 总体流程可以粗略的归纳为: Producer 生产一个消息并指定消息的主题 Topic -> producer 将生产的消息投递给 kafka cluster -> kafka cluster 将消息根据 Topic 拆分成多个partition 存储到各个 broker 中 -> 消费者组订阅主题,负载均衡的消费消息。 接下来我们分析 kafka 的数据分区保存和记录消息消费与生产的方式。
kafka 对于 topic 有一个分区的默认值,通过config/server.properties中通过配置项num.partitions来指定新建Topic的默认Partition数量, 同时也可在创建Topic时通过参数指定或者在Topic创建之后通过Kafka提供的工具修改。生产者将数据写入到kafka主题后, kafka通过不同的策略将数据分配到不同分区中,常见的有三种策略,轮询策略,随机策略,和按键保存策略。
在消费者这一端,一个consumer可以消费一个或多个partition,1个partition只能被同组的一个consumer消费, 但是可以被不同组的多个 consumer 消费。如果一个consumer group中的consumer个数多于topic中的partition的个数, 多出来的consumer会闲置。
分区本身会有多个副本,这多个副本中只有一个是leader,而其他的都是follower。仅有leader副本可以对外提供服务。 通常follower不和leader在同一个broker中,这样当leader 挂掉 follower 不会跟着挂, 而是从众多follower中选一个出来作为leader继续提供服务。
每个分区中还会维护一个 offset (偏移量),这是一个很重要的数据,消息的存取都依赖它。 现在我们可以先简单的理解为往每个分区中写一条数据就会加一个偏移量,而消费一条数据就会减一个偏移量,就好像队列的游标一样。 后文会具体分析它的工作原理。下图为 offset 示意图:
通常由如下几种 Kafka Offset 的管理方式:
后文我们会介绍关于 kafka 的 partition 与 offset 的一些机制,如数据存储与同步,分区原则,分区策略,可靠性保证,高效读写原理等。
中国最?好的一朵云飘进了华瑞银行。阿里云将进一步助力华瑞银行All in Cloud。 -...
本文转载自网络,原文链接:https://mp.weixin.qq.com/s/vlOUg46B5bcmToX-fjavJQ...
查看表结构,sbtest1有主键、k_1二级索引、i_c二级索引 CREATE TABLE `sbtest1` ...
最近,DevOps的采用导致了企业计算的重大转变。除无服务器计算,动态配置和即付...
定义 this是函数运行时自动生成的内部对象,即调用函数的那个对象。(不一定很准...
一、PostgreSQL行业位置 一 行业位置 首先我们看一看RDS PostgreSQL在整个行业当...
9月17日,2020云栖大会上,阿里云正式发布工业大脑3.0。 阿里云智能资深产品专家...
很长时间没有更新原创文章了,但是还一直在思考和沉淀当中,后面公众号会更频繁...
2020年对于云计算行业来说是突破性的一年,因为公共云供应商增加了收入,而疫情...
在TOP云(zuntop.com)科技租赁过服务器的站长都知道独立服务器在价格上比VPS主...