PulsarMQ系列入门篇
文章目录
- 介绍:
- 部署安装讲解:
- 安装单机版本测试(Linux下):
介绍:
PulsarMQ 现托管于apache Apache 软件基金会顶级项目,2016年由雅虎公司开源的分布式多租户消息中间件 ,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、跨区域复制、具有强一致性、高吞吐、低延迟及高可扩展性等流数据存储特性。支持 Pub/Sub 模型和消息队列模型。
官网:
https://pulsar.apache.org/
Pulsar的关键特性如下:
1.云原生架构(计算与存储分离),无缝支持跨集群复制
2.比kafka更高的吞吐量和低延迟
3.无缝支持上百万个topics
4.支持多种消息订阅模式 (exclusive & shared & failover)
5.通过持久化存储BookKeeper保障消息的传递
6.轻量级Serverless计算框架Pulsar Functions提供了流式数据处理能力。
7.提供分层存储能力,释放BookKeeper的空间:将老数据or长期不用的数据放到AWS S3等
消息ACK确定机制:
两种主要是由于pulsar单条,也可以批处理。
1.Being acknowledged individually. With individual acknowledgment, the consumer acknowledges each message and sends an acknowledgment request to the broker.
被单独承认。通过单独的确认,消费者确认每条消息,并向代理发送确认请求。
2.Being acknowledged cumulatively. With cumulative acknowledgment, the consumer only acknowledges the last message it received. All messages in the stream up to (and including) the provided message are not redelivered to that consumer.
被累计承认的。对于累积确认,消费者只确认其接收到的最后一条消息。流中直到(包括)所提供消息的所有消息都不会重新传递给该消费者。
两种方式的API确定(单条,累计)
consumer.acknowledge(msg);
consumer.acknowledgeCumulative(msg);
值的注意的是:
累积确认不能在共享订阅类型中使用,因为共享订阅类型涉及有权访问同一订阅的多个使用者。在共享订阅类型中,消息是单独确认的。
部署安装讲解:
pulsar支持单节点以及集群模式都可以,支持使用docker或者k8s,以下是官网的经典图:
In this diagram, connecting clients need to communicate with the Pulsar cluster using a single URL. In this case, pulsar-cluster.acme.com abstracts over all of the message-handling brokers. Pulsar message brokers run on machines alongside BookKeeper bookies; brokers and bookies, in turn, rely on ZooKeeper.
在该图中,连接客户端需要使用单个URL与Pulsar集群进行通信。在这种情况下,pulser-cluster.ame.com对所有消息处理代理进行了抽象。Pulsar消息代理(broker经纪人)与BookKeeper博彩公司(bookie)一起在机器上运行;而经纪人和博彩公司则依赖ZooKeeper。
乍一看很复杂,怎么说呢,比起其他MQ确实是很复杂,且更加抽象化和组件化,一个完整的pulsar服务需要以上的支持。而zookeeper和broker,bookkeeper的联系如下:
在 Pulsar 中,ZooKeeper 的作用是存储 Pulsar 集群的元数据,例如租户、命名空间、主题等信息。Pulsar Broker 则负责处理客户端的请求,并将消息传递给相应的 BookKeeper 副本进行持久化。而 BookKeeper Bookie 则是实际进行数据存储和检索操作的组件。
具体来说,当客户端发送消息到 Pulsar Broker 时,Broker 会首先将消息写入内存缓冲区,并返回 Acknowledgment(ACK)给客户端。然后,Broker 将消息异步地提交给 BookKeeper 进行持久化。BookKeeper 接收到消息后,会将其写入磁盘,并返回 ACK 给 Broker。当 Broker 接收到来自大多数(通常是半数以上) BookKeeper 副本的 ACK 后,就会确认消息已经成功持久化,并将其从内存缓冲区中删除。
在此过程中,ZooKeeper 负责管理 Pulsar 集群的元数据,例如 Broker 和 BookKeeper 的位置信息、租户的配置信息等。Broker 和 BookKeeper 通过 ZooKeeper 进行注册和发现,并获取集群的配置信息。需要注意的是,Pulsar 支持多个 ZooKeeper 实例进行共享存储,以提高集群的可伸缩性和可用性。
当然ZooKeeper 也是可替换的,可以换成一些其他的注册中心,还有etcd,nacos等等取舍可看一下比较:
etcd、ZooKeeper 和 Nacos 都是分布式存储和协调工具,用于管理和维护分布式系统中的元数据信息,例如配置信息、服务发现、任务调度等。它们各自有一些优点和适用场景,下面进行简要对比:
1)etcd:etcd 是一个高可用的键值存储系统,支持分布式部署和数据复制,并且拥有以下特点:
简单易用:API 设计清晰明了,操作简单;
性能高效:读写性能均较优;
可靠性高:支持多数派复制机制,保证数据的可靠性和一致性;
安全性好:支持 TLS 加密传输和访问控制。
2)ZooKeeper:ZooKeeper 是一个分布式协调服务,提供共享配置管理和分布式锁等功能,具有以下特点:
一致性高:采用 ZooKeeper Atomic Broadcast(ZAB)协议,可以保证分布式系统中各个节点间的数据一致性;
功能强大:提供了多种 API 和工具,支持分布式锁、选举、任务调度等常见的分布式应用场景;
生态丰富:已经被广泛应用于 Hadoop、Kafka、Pulsar 等开源项目和商业产品中。
3)Nacos:Nacos 是一个分布式的配置中心和服务发现平台,旨在帮助企业实现微服务的构建和管理,具有以下特点:
功能全面:支持服务注册、配置管理、服务发现、流量管理等多个功能;
可扩展性好:支持集群部署和主从复制,可以提高系统的可用性和容错性;
易用性强:提供了丰富的客户端和工具,可以快速地接入和使用。
综上所述,etcd 适合对性能要求较高的应用场景;ZooKeeper 适合需要高一致性和更多功能的应用场景;而 Nacos 则适合构建和管理微服务架构。选择使用哪种工具应该根据具体需求和场景进行综合考虑,并进行权衡取舍。
安装单机版本测试(Linux下):
根据我们要使用的PulsarMQ版本选择jdk,本案例使用3.0.0,故先先安装jdk17,可参考帖子:https://blog.csdn.net/xtho62/article/details/131229216
1.下载
## 官方链接,如果直接shell中下载较慢,建议使用迅雷下载后传上去
wget https://archive.apache.org/dist/pulsar/pulsar-3.0.0/apache-pulsar-3.0.0-bin.tar.gz
2.解压安装
mkdir /usr/local/pulsar
tar -zxvf apache-pulsar-3.0.0-bin.tar.gz -C pulsar/
3.开两个窗口在pulsar安装目录下的bin目录执行生产和消费操作:
生产者
可以使用命令行客户端生产消息、消费消息,执行./pulsar-client produce my-topic --messages “hello-pulsar”,即往"my-topic"这个topic生产了一条消息,内容是"hello-pulsar"。
消费者
执行./pulsar-client consume my-topic -s “first-subscription”,即可从"my-topic"这个topic消费消息。生产者客户端和消费者客户端都会自动创建topic,如果操作的topic不存在的话
先投递消息,后消费,日志打印消费成功。
相关文章:
PulsarMQ系列入门篇
文章目录 介绍:部署安装讲解:安装单机版本测试(Linux下): 介绍: PulsarMQ 现托管于apache Apache 软件基金会顶级项目,2016年由雅虎公司开源的分布式多租户消息中间件 ,是下一代云原生分布式消息…...
编程的实践理论 第九章 交互
第九章 交互 根据状态的初始值和终止值,我们已经描述了计算。一个状态变量的声明如下: var x: T S ∃x, x′: T S 它说的是一个状态变量有两个数学变量,一个是初始值,一个是终止值。在这个 声明的作用域内,x和x…...
BSN全球技术创新发展峰会在武汉举办,“延安链”正式发布
原标题:《第二届BSN全球技术创新发展峰会在武汉成功举行》 6月9日,由湖北省人民政府指导,湖北省发展改革委、国家信息中心联合主办,中国移动、中国电信、中国联通、武汉市江汉区人民政府、区块链服务网络(BSN…...
8.4 IP地址与端口号
目录 IP地址 IP地址及编址方式 IP 地址及其表示方法 点分十进制记法举例 IP 地址采用 2 级结构 分类的 IP 地址 分类的 IP 地址 多归属主机 各类 IP 地址的指派范围 编辑 一般不使用的特殊的 IP 地址 编辑 分类的 IP 地址的优点和缺点 划分子网 无分类编址 CIDR 无…...
day56_springmvc
今日内容 零、 复习昨日 零、 复习昨日 一、JSON处理【重点】 springmvc支持json数据交互,但是自己本身没有对应jar,使用的是第三方Jackson,只需要导入对应依赖,springmvc即可使用 如果需要换用到FastJson 导入依赖配置文件中指定json转换的类型为FastJson本次课程没有替换,用的…...
SQL Server Management Studio (SSMS)下载,安装以及连接数据库配置
目录 (一)前言 (二)下载与安装 1. 下载 (1)下载地址 (2)SSMS对操作系统的要求 2. 安装 (1)存放下载好的安装包 (2) 双击进入安…...
go 错误 异常
自定义错误 Go语言中 错误使用内建的 error 类型表示, error类型是一个接口类型:定义如下: error 有一个 Error() 的方法‘所有实现该接口的类型 都可以当做一个错误的类型;Error()方法输入具体错误描述,在打印错误时…...
智慧加油站卸油作业行为分析算法 opencv
智慧加油站卸油作业行为分析系统通过opencvpython网络模型技术,智慧加油站卸油作业行为分析算法实现对卸油作业过程的实时监测。当现场出现卸油作业时人员离岗,打电话人员抽烟等违规行为,灭火器未正确摆放,明火和烟雾等异常状态&a…...
LiangGaRy-学习笔记-Day22
1、shell工具-tput 这个是tput bash工具 具体的操作如下: tput clear:清屏tput cup Y X 第Y行,第X列的位置 tput bold:字体加粗tput sgr0 : 重置命令tput setaf n n:代表数字0-7 0黑色1红色2绿色3黄色4蓝…...
数据库横表和竖表有什么区别
横表和竖表是描述数据库表结构的两种形式,它们之间的主要区别在于数据的组织方式和用途。 横表(宽表): 横表是一种常见的表结构,其特点是每一行数据包含所有相关属性,字段通常作为列出现。横表中的每行代表…...
哈希表--day1--基本理论介绍
文章目录 哈希表哈希函数哈希碰撞拉链法线性探测法 常见的三种哈希函数数组setmap 总结 哈希表 Hash table是根据关键码的值来直接进行访问的数据结构。 其实直白来讲其实数组就是一张哈希表,不过其索引是十分简单的,我们通过0来访问num[0],…...
基于OpenMV的疲劳驾驶检测系统的设计
一、前言 借助平台将毕业设计记录下来,方便以后查看以及与各位大佬朋友们交流学习。如有问题可以私信哦。 本文主要从两个方面介绍毕业设计:硬件,软件(算法)。以及对最后的实验结果进行分析。感兴趣的朋友们可以评论区…...
chatgpt赋能python:使用Python来寻找两个列表不同元素的方法
使用Python来寻找两个列表不同元素的方法 在编写Python程序时,我们经常需要比较两个列表的元素,找出它们之间的不同之处。在搜索引擎优化(SEO)方面,这种比较对于找出两个网站内容的差异也非常有用。在这篇文章中&…...
简单学生管理系统
简单学生管理系统(Java)_封奚泽优的博客-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/130667107?spm1001.2014.3001.5501 转载请注明出处,尊重作者劳动成果。 目录 前期准备: 数据库的连接: 用户账号类:…...
图像金字塔
图像金字塔是由一幅图像的多个不同分辨率的子图构成的图像集合。是通过一个图像不断的降低采样率产生的,最小的图像可能仅仅有一个像素点。下图是一个图像金子塔的示例。从图中可以看到,图像金字塔是一系列以金字塔形状排列的、自底向上分辨率逐渐降低…...
Springboot整合Camunda工作流引擎实现审批流程实例
环境:Spingboot2.6.14 camunda-spring-boot-starter7.18.0 环境配置 依赖配置 <camunda.version>7.18.0</camunda.version> <dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boo…...
PHP设计模式21-工厂模式的讲解及应用
文章目录 前言基础知识简单工厂模式工厂方法模式抽象工厂模式 详解工厂模式普通的实现更加优雅的实现 总结 前言 本文已收录于PHP全栈系列专栏:PHP快速入门与实战 学会好设计模式,能够对我们的技术水平得到非常大的提升。同时也会让我们的代码写的非常…...
【玩转Docker小鲸鱼叭】理解Docker的核心概念
Docker核心概念 Docker有三大核心概念:镜像(Image)、容器(Container)、仓库(Repository) 1、镜像(Image) Docker镜像 是我们创建和运行Docker容器的基础,它…...
Eureka 心跳和服务续约源码探秘——图解、源码级解析
🍊 Java学习:社区快速通道 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年5月25日 🍊 点赞 👍 收藏 ⭐留言 📝 都是我最大的动力! 文章目录 分布式系统的心跳机制心跳机制的实…...
代码随想录二刷 530 二叉搜索树的最小绝对差 98. 验证二叉搜索树 700. 二叉搜索树中的搜索
530 二叉搜索树的最小绝对差 代码如下 func getMinimumDifference(root *TreeNode) int { var pre *TreeNode res : math.MaxInt var traverse func(root * TreeNode) traverse func(root * TreeNode) { if root nil { return } traverse(root.Left) …...
Docker安装——CentOS7.6(详细版)
ps:docker官网 在 CentOS 上安装 Docker 引擎 |官方文档 () 一、确定版本(必须是7以上版本) cat /etc/redhat-release 二、卸载旧版本(或者之前装过,没有安装过就不用管了) (root用…...
论信息系统项目的整体管理(范文)
论信息系统项目的整体管理(范文) 【摘要】 2016年10月,XX省卫生健康委启动了XX省分级转诊服务平台建设项目,我在项目中担任项目经理,负责项目的全面管理工作。该平台作为全省上下级医院转诊的信息化通道,…...
【音视频处理】音频编码AAC详解,低码率提高音质?
大家好,欢迎来到停止重构的频道。 本期我们介绍音频编码格式AAC。 AAC是音频最常用的编码格式之一,几乎所有的播放器都支持这个编码格式。 其他音频编码格式都是类似的,只是某些细节存在差别,如压缩算法、某些音频参数存在限制…...
逆函数学习
逆函数 给定关系 R ⊆ X Y R\subseteq X\times Y R⊆XY,颠倒 R R R的所有有序偶可以得到 R R R的逆关系 R ~ ⊆ Y X \tilde{R}\subseteq Y\times X R~⊆YX 但是对于函数 f : X → Y f:X\to Y f:X→Y而言,其逆关系 f ~ \tilde{f} f~可能不是 Y Y Y到…...
代码审计——SSRF详解
为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 服务端请求伪造攻击(SSRF)也成为跨站点端口攻击,是由于一些应用在向第三方主机请求资源时提…...
搭建Scala开发环境
一、Windows上安装Scala 1、到Scala官网下载Scala Scala2.13.10下载网址:https://www.scala-lang.org/download/2.13.10.html 单击【scala-2.13.10.msi】超链接,将scala安装程序下载到本地 2、安装Scala 双击安装程序图标,进入安装向导&…...
BLIP和BLIP2
文章主要是对BLIP2 (使用冻结图像编码器和大型语言模型的Bootstrapping语言图像预训练)论文的阅读笔记,也对BLIP(用于统一视觉语言理解和生成的Bootstrapping语言图像预训练)算法进行了简单的介绍。 文章:…...
微信小程序开发实战 ⑨(TabBar)
作者 : SYFStrive 博客首页 : HomePage 📜: 微信小程序 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 Ǵ…...
微前端探秘:初始微前端、现有方案和未来趋势
初识微前端 微前端是什么 概念: 微前端是指存在于浏览器中的微服务。 微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将单页面前端应用由单一的单体应用转变为把多个小型前端应用聚合为一体的应用。这就意味着前端应用…...
运维(SRE)成长之路-第2天 文本编辑工具之神VIM
vi和vim简介 在Linux中我们经常编辑修改文本文件,即由ASCII, Unicode 或其它编码的纯文字的文件。之前介绍过nano,实际工作中我们会使用更为专业,功能强大的工具 文本编辑种类: 全屏编辑器:nano(字符工具…...
专门做优选的网站/深圳推广服务
我们知道,swoole中有两大进程,分别是 master 主进程和 manager 管理进程。 (推荐学习:swoole视频教程)其中 master 主进程中会有一个主 reactor 线程和多个 reactor 线程,主要的作用就是用来维护TCP连接,处理网络IO&am…...
银川住房和城乡建设厅网站/上海怎么做seo推广
在Hibernate中有三种状态,对这三种状态的深入的理解,能够更好的理解Hibernate的执行机制。在整个Hibernate中这三种状态是能够进行转换的。1.Transient Object(瞬时对象): 1.仅仅是new了对象,可是对象没有马上被持久化。2.没有和不…...
温州网站制作策划/百度信息流广告推广
错误和异常的区别(Error vs Exception)参考文章: (1)错误和异常的区别(Error vs Exception) (2)https://www.cnblogs.com/with-wang/archive/2012/03/24/java_doc_3.html 备忘一下。...
网站开发环境 对比/品牌宣传活动策划方案
Kmeans是最经典的聚类算法之一,它的优美简单、快速高效被广泛使用。 Kmeans算法描述 输入:簇的数目k;包含n个对象的数据集D。 输出:k个簇的集合。 方法: 从D中任意选择k个对象作为初始簇中心;repeat;根据簇…...
英文二手汽车网站建设/潍坊网站建设咨询
织梦500内部服务器错误一般是iis环境的小伙伴才会遇到,织梦的500错误一般是因为这2个原因引起的 第一个500错误原因:你网站织梦程序版本太低而你主机PHP版本过高 1、先查看你网站程序是织梦什么版本的 打开 /data/admin/ver.txt 文件查看,例…...
html 单页网站/百度霸屏培训
部署django项目常见的方式有三种: 1.在windows服务器中,采用IIS服务器进行部署。 2.在Linux服务器中,采用uwsginginx或者uwsgiapache的组合进行部署。 本文主要介绍在ubuntu20.04中采用uwsginginx的组合进行上线部署的方法。 第一步 安装uwsgi 1.首先启…...