.NET中 kafka消息队列、环境搭建与使用
前面几篇文章中讲了一些关于消息队列的知识,就每中消息队列中间件,我们并没有做详细的讲解,那么,今天我们就来详细的讲解一下消息队列之一kafka的一些基本的使用与操作。
一、kafka介绍
kafka:是一种高吞吐量的分布式发布订阅的消息队列系统,具有高性能和高吞吐率。
1.1术语介绍
Broker
kafka集群包括一个或多个服务器,这种服务器被称为Broker
Topic
主题:每条发布到kafka集群的消息都有一个类别,这个类别被称为Topic,(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker,但用户是需要指定消息的Topic即可生产或消费数据,而不必关心数据存于何处)
Partition
分区:Partition是物理上的概念,每个Topic包含一个或多个Partition,(一般kafka节点数cpu的总核数)
Producter
生产者:负责发布消息到kafka broder
Consumer
消费者:从kafka broker读取消息的客户端
Consumer Group
消费者组:每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name,则属于默认的group)。
1.2基本特性
可扩展性
在不需要下线的情况下进行扩展,数据流分区(partition)存储在多个机器上
高性能
单个broker就能服务上千客户端,单个broker每秒读/写可达美国几百兆字节,多个brokers组成的集群将达到非常强大的吞吐能力。
性能稳定
无论数据多大,kafka在底层采用了操作系统级别的页缓存,同时将随机于操作改为顺序写,再结合Zero-Copy的特性集答的改善了IO性能。
1.3消息格式
一个topic对应一种消息格式,因此消息用topic分类,一个topic代表的消息有一个或多个partition组成,一个partition应该存放在多个servier上,如果只有一个server,就没有冗余备份,是单机而不是集群;如果有多个server,一个server为leader(领导者),其他server为follower(跟随者),leader需要接收读写请求,follower仅作冗余备份,leader出现故障,会自动选举一个follower作为leader,保证服务不中断,每个server都可能扮演一些partition的leader核其partition的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的broder上,一个partition在每个broker上是一个文件夹,文件夹中的文件命名方式为:topic名称+有序序号。每个partition中文件是一个个的segment,segment file由.index和.log文件组成,两个文件的命名规则是,上一个segment file的最后一个offset,这样,可以快速删除old文件。
producer向kafka里push数据,会自动的push到所有的分区上,消息是否push成功有几种情况:1、接受到partition的ack就算成功,2、全部副本都写成功才算成功;数据可以存储多久,默认是两天;producer的数据会先存到缓存中,等大小活时间到达阈值时,flush到磁盘,consumer只能读到磁盘中的数据。
二、win10下kafka简单安装以及使用。
http://kafka.apache.org/quickstart#quickstart_multibroker kafka使用文档说明
kafka依赖于zookeeper,官网下的kafka内置了zookeeper依赖,
1、进入kafka官网,下载页面: http://kafka.apache.org/downloads 进行下载,选择二进制文件,在选择任意镜像文件下载。


下载成功后解压到本地文件夹,我这里解压到了D盘

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.00\\data


【service.properties】

【zookeeper.properties】
3、进行单及实例测试简单使用
我这里观景是windows,使用的是路径E:\\Kafka\kafka_2.12-2.0.0\bin\windows下批处理命令,如果有问题,参见步骤:、
1)启动kafka内置的zookeeper
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties


出现binding to port…… 标识zookeeper启动成功,不关闭页面
2)kafka服务启动,成功不关闭页面
.\bin\windows\kafka-server-start.bat .\config\server.properties

3)创建topic测试主题kafka,成功不关闭页面
.\bin\windows\kafka-topic.bat --create --zookeeper localhost:2181 --replication-factor 1 --partition 1 --topic test

4)创建生产者生产消息,不关闭页面
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

5)创建消费者接收消息,不关闭页面
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning


到此,测试结束。对于kafka的使用,本人还是菜鸟一枚,还请高手指点一二。
.NET中 kafka消息队列、环境搭建与使用的更多相关文章
- Canal Server发送binlog消息到Kafka消息队列中
Canal Server发送binlog消息到Kafka消息队列中 一.背景 二.需要修改的地方 1.canal.properties 配置文件修改 1.修改canal.serverMode的值 2. ...
- 大数据 -- zookeeper和kafka集群环境搭建
一 运行环境 从阿里云申请三台云服务器,这里我使用了两个不同的阿里云账号去申请云服务器.我们配置三台主机名分别为zy1,zy2,zy3. 我们通过阿里云可以获取主机的公网ip地址,如下: 通过secu ...
- kafka 集群环境搭建 java
简单记录下kafka集群环境搭建过程, 用来做备忘录 安装 第一步: 点击官网下载地址 http://kafka.apache.org/downloads.html 下载最新安装包 第二步: 解压 t ...
- 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析
1.[连载]<C#通讯(串口和网络)框架的设计与实现> 2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 2.应用SuperIO(SIO)和开源跨平台物联网框 ...
- C#中使用消息队列RabbitMQ
在C#中使用消息队列RabbitMQ 2014-10-27 14:41 by qy1141, 745 阅读, 2 评论, 收藏, 编辑 1.什么是RabbitMQ.详见 http://www.rabb ...
- kafka消息队列的简单理解
kafka在大数据.分布式架构中都很流行.kafka可以进行流式计算,也可以做为日志系统,还可以用于消息队列. 本篇主要是消息队列相关的知识. 零.kafka作为消息队列的优点: 分布式的系统 高吞吐 ...
- Kafka单机Windows环境搭建
Kafka单机Windows环境搭建 1,安装jdk1.8:安装目录不能有中文空格: 2,下载zookeeper,https://mirrors.cnnic.cn/apache/zookeeper/z ...
- 初试kafka消息队列中间件一 (只适合初学者哈)
初试kafka消息队列中间件一 今天闲来有点无聊,然后就看了一下关于消息中间件的资料, 简单一点的理解哈,网上都说的太高大上档次了,字面意思都想半天: 也就是用作消息通知,比如你想告诉某某你喜欢他,或 ...
- 使用Cloudera Manager部署Kafka消息队列
使用Cloudera Manager部署Kafka消息队列 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载需要安装的Kafka版本 1>.查看Cloudera Dis ...
随机推荐
- sql-lib闯关1-10关
闯关之前我们需要搭建所需环境SQLi-Labs SQLi-Labs是一个专业的SQL注入练习平台,该平台包含了以下在测试场景中常见的注入类型: 1.报错注入(联合查询) 1)字符型 ...
- CVPR 2019细粒度图像分类竞赛中国团队DeepBlueAI获冠军 | 技术干货分享
[导读]CVPR 2019细粒度图像分类workshop的挑战赛公布了最终结果:中国团队DeepBlueAI获得冠军.本文带来冠军团队解决方案的技术分享. 近日,在Kaggle上举办的CVPR 201 ...
- 1+1>2:MIT&IBM提出结合符号主义和连接主义的高效、准确新模型
自人工智能的概念提出以来,关于符号主义和连接主义的争论就不绝于耳.究竟哪一种方式可以实现更好的人工智能?这一问题目前还没有定论.深度学习的快速发展让我们看到连接主义在构建 AI 系统中的优势,但其劣势 ...
- 新手必备 | 史上最全的PyTorch学习资源汇总
目录: PyTorch学习教程.手册 PyTorch视频教程 PyTorch项目资源 - NLP&PyTorch实战 - CV&PyTorch实战 PyTorch论 ...
- Flutter Weekly Issue 49
插件/Librarys flutter_date_pickers Allows to use date pickers without dialog. Provides some customizab ...
- 性能计数器在.NET Core中的新玩法
传统的.NET Framework提供的System.Diagnostics.PerformanceCounter类型可以帮助我们收集Windows操作系统下物理机或者进程的性能指标,基于Perfor ...
- [讲解]网络流最大流dinic算法
网络流最大流算法dinic ps:本文章不适合萌新,我写这个主要是为了复习一些细节,概念介绍比较模糊,建议多刷题去理解 例题:codevs草地排水,方格取数 [抒情一下] 虽然老师说这个多半不考,但是 ...
- [tyvj2032]升降梯上<dp&spfa>
题目背景 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄. 题目描述 Nescafe 之 ...
- [洛谷1437&Codevs1257]敲砖块<恶心的dp>
题目链接:https://www.luogu.org/problem/show?pid=1437#sub http://codevs.cn/problem/1257/ 不得不说,这个题非常的恶心,在初 ...
- 模拟Java内存溢出
本文通过修改虚拟机启动参数,来剖析常见的java内存溢出异常(基于jdk1.8). 修改虚拟机启动参数Java堆溢出虚拟机栈溢出方法区溢出本机直接内存溢出 修改虚拟机启动参数 这里我们使用的是ID ...