zoukankan      html  css  js  c++  java
  • kafka消息队列、环境搭建与使用(.net framework)

    一:kafka介绍

    kafka(官网地址:http://kafka.apache.org)是一种高吞吐量的分布式发布订阅的消息队列系统,具有高性能和高吞吐率。

    1.1 术语介绍

    Broker
    Kafka集群包含一个或多个服务器,这种服务器被称为broker
    Topic
    主题:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
    Partition
    分区:Partition是物理上的概念,每个Topic包含一个或多个Partition.(一般为kafka节点数cpu的总核数)
    Producer
    生产者,负责发布消息到Kafka broker
    Consumer
    消费者:从Kafka broker读取消息的客户端。
    Consumer Group
    消费者组:每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。
    1.2 基本特性

    可扩展性
    在不需要下线的情况下进行扩容
    数据流分区(partition)存储在多个机器上
    高性能
    单个broker就能服务上千客户端
    单个broker每秒种读/写可达每秒几百兆字节
    多个brokers组成的集群将达到非常强的吞吐能力
    性能稳定,无论数据多大
    Kafka在底层摒弃了Java堆缓存机制,采用了操作系统级别的页缓存,同时将随机写操作改为顺序写,再结合Zero-Copy的特性极大地改善了IO性能。
    1.3 消息格式

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

    producer创建一个topic时,可以指定该topic为几个partition(默认是1,配置num.partitions),然后会把partition分配到每个broker上,分配的算法是:a个broker,第b个partition分配到b%a的broker上,可以指定有每个partition有几分副本Replication,副本的分配策略为:第c个副本存储在第(b+c)%a的broker上。一个partition在每个broker上是一个文件夹,文件夹中文件的命名方式为:topic名称+有序序号。每个partition中文件是一个个的segment,segment file由.index和.log文件组成。两个文件的命名规则是,上一个segmentfile的最后一个offset。这样,可以快速的删除old文件。

    producer往kafka里push数据,会自动的push到所有的分区上,消息是否push成功有几种情况:1,接收到partition的ack就算成功,2全部副本都写成功才算成功;数据可以存储多久,默认是两天;producer的数据会先存到缓存中,等大小或时间达到阈值时,flush到磁盘,consumer只能读到磁盘中的数据。

    consumer从kafka里poll数据,poll到一定配置大小的数据放到内存中处理。每个group里的consumer共同消费全部的消息,不同group里的数据不能消费同样的数据,即每个group消费一组数据。

    consumer的数量和partition的数量相等时消费的效率最高。这样,kafka可以横向的扩充broker数量和partitions;数据顺序写入磁盘;producer和consumer异步

    二:环境搭建(windows)

    Win10下kafka简单安装及使用

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/github_38482082/article/details/82112641

          新手教程,老鸟忽略

          使用具体参见http://kafka.apache.org/quickstart#quickstart_multibroker文档使用说明,如有问题欢迎交流。


    kafka依赖于zookeeper,官网下载的kafka内置了zookeeper依赖。

          1.进入kafka官网下载页面http://kafka.apache.org/downloads进行下载,选择二进制文件,再选择任意一个镜像文件下载。

    下载成功后解压到本地文件夹D:Kafka下面

    2.关键配置

    只需关注bin目录和config目录

    在kafka根目录下新建data和kafka-logs文件夹,后面要用到,作为kafka快照和日志的存储文件夹

    进入到config目录,修改service.properties里面log.dirs路径未log.dirs=E:\Kafka\kafka_2.12-2.0.0\kafka-logs(注意:文件夹分割符一定要是”\”)

    修改zookeeper.properties里面dataDir路径为dataDir=E:\Kafka\kafka_2.12-2.0.0\data

                                                      【service.properties】

                                                        【zookeeper.properties】

    3.进行单机实例测试简单使用

    windows使用的是路径E:Kafkakafka_2.12-2.0.0inwindows下批处理命令,如有问题,参见

    步骤:

    1)启动kafka内置的zookeeper

    .inwindowszookeeper-server-start.bat  .configzookeeper.properties

    出现binding to port ...表示zookeeper启动成功,不关闭页面

    2)kafka服务启动 ,成功不关闭页面

    .inwindowskafka-server-start.bat .configserver.properties

    3)创建topic测试主题kafka,成功不关闭页面

    .inwindowskafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

    4)创建生产者产生消息,不关闭页面

    .inwindowskafka-console-producer.bat --broker-list localhost:9092 --topic test

    5)创建消费者接收消息,不关闭页面

    .inwindowskafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

  • 相关阅读:
    前端面试题—Js
    前端面试题—css
    前端面试题—html
    JavaScript 闭包
    JavaScript 计算斐波那切数列
    JavaScript continue使用
    JavaScript break 使用
    JavaScript 综合运算 (数字运算符+比较运算符+逻辑运算符)
    JavaScript 逻辑运算符 特殊字符 纯数字字符串
    JavaScript 比较运算符 特殊字符 纯数字字符串
  • 原文地址:https://www.cnblogs.com/qingfenglin/p/11399866.html
Copyright © 2011-2022 走看看