PulsarMQ系列入门篇

news2024/12/24 10:04:47

文章目录

    • 介绍:
    • 部署安装讲解:
    • 安装单机版本测试(Linux下):

介绍:

PulsarMQ 现托管于apache Apache 软件基金会顶级项目,2016年由雅虎公司开源的分布式多租户消息中间件 ,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、跨区域复制、具有强一致性、高吞吐、低延迟及高可扩展性等流数据存储特性。支持 Pub/Sub 模型和消息队列模型。

官网:

https://pulsar.apache.org/

消息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不存在的话

先投递消息,后消费,日志打印消费成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/650707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PaddleOCR #hello paddle: 从普通程序走向机器学习程序 - 初识机器学习

这篇示例向你介绍普通程序跟机器学习程序的区别,并带着你用百度飞桨框架,实现第一个机器学习程序,并初步认识机器学习。 作为一名开发者,你最熟悉的开始学习一门编程语言,或者一个深度学习框架的方式,可能是…

万字长文:大模型训练避坑指南

自 2022 年 11 月底 ChatGPT 发布以来,大模型的热度持续发酵,相信高屋建瓴的讨论大家已经看了很多了。今天我们选择从实用角度,分别就算力、算法、工程、数据和团队等方向讨论了训练一个千亿参数量级的大语言模型和 ChatGPT 需要些什么&#…

4.17 TCP三次握手 4.18滑动窗口 4.19TCP四次挥手

4.17 TCP三次握手 TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如 IP 地址、端口号等。 TCP 可以看成是一种字节流&a…

i.MX 91x推出,飞凌嵌入式携手NXP打造更强大、更经济、更安全的解决方案

NXP在COMPUTEX 2023上发布了i.MX 91应用处理器系列,作为i.MX 9系列的入门级产品,i.MX 91x简化了高性价比边缘设备的开发过程,助力构建需要安全性、高性能表现以及Linux支持的可扩展、高可靠性的平台,可满足下一代基于Linux的物联网…

【数据库三】MySQL索引

MySQL索引、事务与存储引擎 1.MySQL索引1.1 索引的概念1.2 索引的作用​1.3 索引的副作用​1.4 创建索引的原则依据​ 2.索引的分类和创建2.1 普通索引2.2 唯一索引2.3 主键索引2.4 组合索引2.5 全文索引 3. 查看索引4.删除索引5. 知识点总结 1.MySQL索引 1.1 索引的概念 索引…

基于html+css的图展示127

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Unity光照贴图的切换,实现黑夜和白天效果

有这么一个需求,不能使用实时光来进行动态控制光照开关,但是又要实现白天和黑夜的效果,我的场景中有大概十几个点光源和平行光 实现步骤: 一、模型原模原样复制到另一个场景中(因为贴图只能存在于当前的场景文件夹&am…

618私藏好物推荐!看这份清单就够了!

又到了一年一度的618,相信大家的购物车已经堆得满满的, 部分人已经选好了自己想要的东西,但也有一部分人还在纠结自己到底应该买什么。今天就给大家分享我的618私藏好物, 如果你想在这个夏天买到自己心仪的好物,建议你…

IIC总线 测温度和湿度

iic.c #include "iic.h"extern void printf(const char* fmt, ...); /** 函数名 : delay_us* 函数功能:延时函数* 函数参数:无* 函数返回值:无* */ void delay_us(void) {unsigned int i 2000;while(i--); } /** 函数…

字符设备驱动的内部实现

1.inode号的功能 :①inode号是文件存在于文件系统的唯一标识1 ②同时也是索引当前文件的inode结构体的索引导 2.文件信息结构体:只要文件存在于文件系统中,那么内核中一定会存在一个struct inode结构体,这个结构体里面存放了文件…

详解Http的Content-Type

目录 1.概述 2.常用类型 2.1.application/x-www-form-urllencoded 2.2.application/json 3.Spring MVC支持的编码 3.1.实验 3.2.适配器 3.3.自定义适配器 1.概述 HTTP(HyperText Transfer Protocol),超文本传输协议。超文本&#xf…

从redis-trib.rb到集群加减节点实战

redis-trib.rb工具介绍 redis-trib.rb是redis集群管理工具,可以检查集群、创建删除节点、挪key、批量下发实例命令等等。 不是没有redis-trib.rb就没有集群管理了,没有redis-trib.rb照样可以管理集群。redis本身就有集群相关管理命令,redis-…

2021年系统架构设计师考试下午案例分析真题

试题一 阅读以下关于软件架构设计与评估的叙述,在答题纸上回答问题1和问题2。 [说明] 某公司拟开发-套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。 该评台的核心应用场景是用户通过拖拽算法组件灵活定义机器学习流程&#…

“6511”成果显著,联诚发上半年表现企稳高升!

六场巡回演唱会,五大知名展会,一部爆款大电影,一项省级品牌荣誉。 这些关键词,是联诚发(LCF)在短短六个月内取得的各项成果的总览。 ▲联诚发LCF 公司简介 绿树阴浓夏日长,6月的到来也预示着阶…

让小脚本成为自己高效测试的工具(详细版)

目录 测试中会遇到的工具 测试常用的开源工具 Python 移动/UI自动化测试平台 平台需要做什么 自建需要的技术 接口测试平台 运维 Django运维部署框架 单元测试概述 什么是单元测试 单元测试什么进行? 单元测试由谁负责? 单元测试需要注意 …

opencv祛除高光

代码是直接借鉴的Opencv去除高光_SkyrimDragonBorn的博客-CSDN博客 原博客是c,我这边只是使用python进行翻译了一下 import cv2 import numpy as npimg cv2.imread(xxx.jpg)def highlight_remove(img):img cv2.cvtColor(img, cv2.COLOR_BGR2RGB).astype(np.floa…

java0615

01java语言背景介绍 02java语言跨平台原理 03JRE和JDK

View UI Plus (iview)表格单选实现教程

View UI Plus 是 View Design 设计体系中基于 Vue.js 3 的一套 UI 组件库,主要用于企业级中后台系统 View UI,即原先的 iView,从 2019 年 10 月起正式更名为 View UI,并使用全新的 Logo View UI Plus 实现表格单选,这…

八股文总结

文章目录 项目介绍1.不动产项目项目难点机器学习算法调研图像提取算法调研数据集-ImageNetXceptionVGGInceptionDensenetMobilenet 系统流程图 2.图书项目技术栈ShiroMybatisMyBatis:Mybatis Plus: 面试问题 Java基础基本数据类型反射接口和抽象类异常代理模式1. 静态代理2. 动…

Java Logback日志框架概述及logback.xml详解

日志技术具备的优势 可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)。 可以随时以开关的形式控制是否记录日志,无需修改源代码。 日志体系结构 Logback日志框架 Logback是由log4j创始人设计的另一个开源日志组件&#xff0…