当前位置: 首页 > news >正文

pulsar入门介绍

概述

Pulsar 是一个多租户、高性能的服务器到服务器消息传递解决方案。Pulsar 最初由 Yahoo 开发,由 Apache 软件基金会管理。

特点

Pulsar 的主要功能如下:

  • 原生支持 Pulsar 实例中的多个集群,可跨集群无缝地复制消息。
  • 非常低的发布和端到端延迟。
  • 无缝扩展到超过一百万个主题。
  • 一个简单的客户端 API,具有 Java、Go、Python 和 C++ 的绑定。
  • 主题的多种订阅类型(独占、共享和故障转移)。
  • 使用 Apache BookKeeper 提供的持久消息存储保证消息传递。 Pulsar Functions 是一个无服务器的轻量级计算框架,提供流原生数据处理能力。
  • 基于 Pulsar Functions 构建的无服务器连接器框架 Pulsar IO 可以更轻松地将数据移入和移出 Apache Pulsar。
  • 当数据老化时,分层存储将数据从热/热存储卸载到冷/长期存储(例如 S3 和 GCS)。

消息

Pulsar 建立在 publish-subscribe 模式(通常缩写为 pub-sub)之上。在此模式中,生产者将消息发布到主题;使用者订阅这些主题,处理传入的消息,并在处理完成后向代理发送确认。
在这里插入图片描述
创建订阅时,Pulsar 会保留所有消息,即使使用者已断开连接。只有当使用者确认所有这些消息都已成功处理时,才会丢弃保留的消息。

如果消息的使用失败,并且您希望再次使用此消息,那么可以启用消息重新传递机制以请求代理重新发送此消息。

主题

Pulsar 主题是一种存储单元,用于将消息组织到流中。与其他 pub-sub 系统一样,Pulsar 中的主题是命名通道,用于将消息从生产者传递给消费者。

不需要在 Pulsar 中显式创建主题。如果客户端尝试向尚不存在的主题写入或接收消息,Pulsar 会自动在主题名称中提供的命名空间下创建该主题。

命名空间

Pulsar 命名空间是主题的逻辑分组,也是租户中的逻辑命名法。租户通过管理 API 创建命名空间。

订阅

Pulsar 订阅是一个命名的配置规则,用于确定消息如何传递给消费者。这是由一群消费者建立的主题的租约。Pulsar 中有四种订阅类型:

  • exclusive:独占类型是仅允许单个使用者附加到订阅的订阅类型。如果多个消费者使用同一个订阅订阅一个主题,则会发生错误。请注意,如果主题已分区,则所有分区将由允许连接到订阅的单个使用者使用。
  • shared:Pulsar 中的共享订阅类型允许多个消费者附加到同一个订阅。消息在使用者之间以循环分布方式传递,并且任何给定的消息都只传递给一个使用者。当使用者断开连接时,将重新安排发送给它但未确认的所有消息,以发送给其余使用者。
  • failover:故障转移类型是多个使用者可以附加到同一订阅的订阅类型。为非分区主题或分区主题的每个分区选取主使用者并接收消息。当主使用者断开连接时,所有(未确认和后续)消息都将传递给下一个使用者。
  • key_shared:Pulsar 中的Key_Shared订阅类型允许多个消费者附加到同一个订阅。但与 Shared 类型不同的是,Key_Shared类型的消息在使用者之间分发,并且具有相同键或相同排序键的消息仅传递给一个使用者。无论消息被重新传递多少次,它都会传递给同一个使用者。
    在这里插入图片描述

架构

在这里插入图片描述

Pulsar 集群主要由三个核心组件构成,它们分别是:

  • ZooKeeper 集群:负责元数据存储、集群配置和协调工作。Pulsar 使用 Apache Zookeeper 来保存租户、命名空间以及其他全局一致的配置项。每个 Pulsar 集群通常都会有自己独立的 ZooKeeper 集群来保持内部配置和协调信息,如归属信息、Broker 负载报告以及 BookKeeper ledger 信息等。

  • Bookkeeper 集群(也称为 Bookie 集群):提供持久化消息存储机制,确保消息的可靠传递。BookKeeper 是 Pulsar 用来持久化消息的核心组件,它通过 ledger 信息来跟踪消息的存储状态。

  • Broker 集群:由 Pulsar 节点组成,是 Pulsar 系统的自身实例。Broker 负责处理客户端的连接请求,执行消息的发布和订阅操作。在 Pulsar 架构中,Broker 承担着消息路由和分发的关键角色。

元数据存储

Pulsar 元数据存储用于维护 Pulsar 集群的所有元数据,例如主题元数据、schema、broker 加载数据等。Pulsar 使用 Apache ZooKeeper 进行元数据存储、集群配置和协调。

配置存储

配置存储是一个 ZooKeeper 仲裁,用于特定于配置的任务,它维护 Pulsar 实例的所有配置,例如集群、租户、命名空间、分区主题相关配置等。

持久性存储

Pulsar 通过Apache BookKeeper提供的持久化消息存储机制来保证消息传递。这种机制确保了未确认的消息能够持久化存储,直至它们被消费者确认。

在 Pulsar 中,所有消息都有 N 个副本存储在磁盘上并且进行同步,以确保消息的持久性和可靠性。这样的设计使得 Pulsar 能够在发生故障时仍然保持数据的完整性和一致性。

此外,Pulsar 还引入了 Retention 机制,允许用户配置消息持久化的策略,从而避免消息无限期地占用存储空间。这些策略可以根据业务需求进行调整,以实现成本和性能之间的平衡。

部署Pulsar服务

1.版本依赖jdk版本要求

  • pulsar 版本 > 2.10
组件Java 版本
Broker17
Functions / IO17
CLI17
Java Client8 or 11 or 17
  • 2.8 <= pulsar 版本 <= 2.10
组件Java 版本
Broker11
Functions / IO11
CLI8 or 11
Java Client8 or 11
  • pulsar 版本 < 2.8
组件Java 版本
All8 or 11

2.下载安装包

下载安装包,可直接复制地址下载,命令如下:

wget https://archive.apache.org/dist/pulsar/pulsar-3.2.0/apache-pulsar-3.2.0-bin.tar.gz

上传到服务器,并解压,命令如下:

tar xvfz apache-pulsar-3.2.0-bin.tar.gz

进入pulsar文件夹:

cd apache-pulsar-3.2.0

目录如下:

目录名介绍
bin启动脚本和许多其他命令行工具
conf配置文件,包括broker.conf
libPulsar 使用的 JAR
examples示例
instancesPulsar函数

3.启动 Pulsar 独立集群

运行以下命令以启动独立的 Pulsar 集群:

bin/pulsar standalone

当 Pulsar 集群启动时,会创建以下目录:

目录描述
dataBookKeeper 和 RocksDB 创建的所有数据
logs所有服务器端日志

4.创建主题

要创建新主题,请运行以下命令:

bin/pulsar-admin topics create persistent://public/default/my-topic

5.写入消息

运行以下命令以生成消息:

bin/pulsar-client produce my-topic --messages 'Hello Pulsar!'

6.消费消息

运行以下命令以启动使用者并读回这些消息:

bin/pulsar-client consume my-topic -s 'my-subscription' -p Earliest -n 0

Earliest:意味着从最早的未使用消息开始使用。
-n 0:表示永久消耗

相关文章:

pulsar入门介绍

概述 Pulsar 是一个多租户、高性能的服务器到服务器消息传递解决方案。Pulsar 最初由 Yahoo 开发&#xff0c;由 Apache 软件基金会管理。 特点 Pulsar 的主要功能如下&#xff1a; 原生支持 Pulsar 实例中的多个集群&#xff0c;可跨集群无缝地复制消息。非常低的发布和端…...

Leetcode 3047. Find the Largest Area of Square Inside Two Rectangles

Leetcode 3047. Find the Largest Area of Square Inside Two Rectangles 1. 解题思路2. 代码实现 题目链接&#xff1a;3047. Find the Largest Area of Square Inside Two Rectangles 1. 解题思路 这道题倒是没啥特别的思路&#xff0c;直接暴力求解就是了&#xff0c;因此…...

ELK 简介安装

1、概念介绍 日志介绍 日志就是程序产生的&#xff0c;遵循一定格式&#xff08;通常包含时间戳&#xff09;的文本数据。 通常日志由服务器生成&#xff0c;输出到不同的文件中&#xff0c;一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。 日志…...

Linux 的交换空间(swap)是什么?有什么用?

目录 swap是什么&#xff1f;swap有什么用&#xff1f;swap使用典型场景如何查看你的系统是否用到交换空间呢&#xff1f;查看系统中swap in/out的情况 swap是什么&#xff1f; swap就是磁盘上的一块区域。它和Windows系统中的交换文件作用类似&#xff0c;但是它是一段连续的…...

消息中间件篇之RabbitMQ-消息不丢失

一、生产者确认机制 RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。消息发送到MQ以后&#xff0c;会返回一个结果给发送者&#xff0c;表示消息是否处理成功。 当消息没有到交换机就失败了&#xff0c;就会返回publish-confirm。当消息没有到达MQ时&…...

MongoDB中的TTL索引:自动过期数据的深入解析与使用方式

目录 一、TTL索引的深入原理二、TTL索引的使用方式三、TTL索引的限制与考虑因素四、优化TTL索引的策略五、总结 一、TTL索引的深入原理 TTL&#xff08;Time-To-Live&#xff09;索引在MongoDB中是一种特殊的索引&#xff0c;用于自动删除过期的文档。其核心原理在于MongoDB会…...

IPV6地址

技术背景&#xff1a;对IPV4做优化&#xff0c;比如地址长度128&#xff0c;简化了报文头部---快 ipv6地址 十六进制&#xff0c;简写前导0忽略&#xff0c;连续的0写成:: IPv6地址类型 1.单播 2.组播---接口有地址后&#xff0c;自动加入到一个组播里 3.任播---允许地址…...

解密API关键词搜索(淘宝京东1688)商品列表数据

API关键词搜索商品列表数据&#xff1a;赋能电商行业的新动力 随着电子商务的蓬勃发展&#xff0c;API&#xff08;应用程序接口&#xff09;关键词搜索商品列表数据在电商行业中的重要性日益凸显。这一数据资源不仅为消费者提供了便捷的购物体验&#xff0c;还为电商企业带来…...

wpf 简单实验 数据更新 列表更新

1.概要 1.1 需求 一个列表提供添加修改删除的功能&#xff0c;添加和修改的内容都来自一个输入框 1.2 要点 DisplayMemberPath"Zhi"列表.ItemsSource datalist;(列表.SelectedItem ! null)(列表.SelectedItem as A).Zhi 内容.Text;datalist.Remove((列表.Selec…...

【Flink精讲】Flink性能调优:内存调优

内存调优 内存模型 JVM 特定内存 JVM 本身使用的内存&#xff0c;包含 JVM 的 metaspace 和 over-head 1&#xff09; JVM metaspace&#xff1a; JVM 元空间 taskmanager.memory.jvm-metaspace.size&#xff0c;默认 256mb 2&#xff09; JVM over-head 执行开销&#xff1…...

Java 中常用的数据结构类 API

目录 常用数据结构API 对应的线程安全的api 高可用衡量标准 常用数据结构API ArrayList: 实现了动态数组&#xff0c;允许快速随机访问元素。 import java.util.ArrayList; LinkedList: 实现了双向链表&#xff0c;适用于频繁插入和删除操作。 import java.util.LinkedLis…...

JavaScript学习小记(1)基本数据结构(数组,字符串)

一个寒假确实过的很快&#xff0c;这个寒假除了调包调参突然心血来潮想学一下前端&#xff0c;学习过程比较平滑&#xff0c;我是自己找的技术文档&#xff0b;写代码实践来学习的&#xff0c;教程视频虽然详细&#xff0c;但是真的一点都看不动。 目录 JS如何定义变量的老旧的…...

python opencv实现车牌识别

目录 一:实现步骤: 二:实现车牌检测 一:实现步骤: 使用Python和OpenCV实现车牌识别的步骤大致可以分为以下两部分: 车牌检测: 读取需要进行车牌识别的图片。 对图像进行灰度化处理,可能还包括高斯模糊和灰度拉伸。 进行开运算,消除图像中的噪声。 将灰度拉伸后的图…...

K8S节点GPU虚拟化(vGPU)

vGPU实现方案 4paradigm提供了k8s-device-plugin,该插件基于NVIDIA官方插件(NVIDIA/k8s-device-plugin),在保留官方功能的基础上,实现了对物理GPU进行切分,并对显存和计算单元进行限制,从而模拟出多张小的vGPU卡。在k8s集群中,基于这些切分后的vGPU进行调度,使不同的容器…...

NLP 使用Word2vec实现文本分类

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.com/…...

【Redis学习笔记03】Java客户端

1. 初识Jedis Jedis的官网地址&#xff1a;https://github.com/redis/jedis 1.1 快速入门 使用步骤&#xff1a; 注意&#xff1a;如果是云服务器用户使用redis需要先配置防火墙&#xff01; 引入maven依赖 <dependencies><!-- 引入Jedis依赖 --><dependency&g…...

神经网络系列---激活函数

文章目录 激活函数Sigmoid 激活函数Tanh激活函数ReLU激活函数Leaky ReLU激活函数Parametric ReLU激活函数 &#xff08;自适应Leaky ReLU激活函数&#xff09;ELU激活函数SeLU激活函数Softmax 激活函数Swish 激活函数Maxout激活函数Softplus激活函数 激活函数 一般来说&#xf…...

python中continue的对比理解

# 使用while循环&#xff0c;输入1-10之间的数字&#xff0c;除7之外。 以下为代码对比&#xff1a; # 使用while循环&#xff0c;输入1-10之间的数字&#xff0c;除7之外。 # 第一种方式 num 0 while num < 10:num num 1if num 7:print("")else:print(num)…...

Amazon Generative AI | 基于 Amazon 扩散模型原理的代码实践之采样篇

以前通过论文介绍 Amazon 生成式 AI 和大语言模型&#xff08;LLMs&#xff09;的主要原理之外&#xff0c;在代码实践环节主要还是局限于是引入预训练模型、在预训练模型基础上做微调、使用 API 等等。很多开发人员觉得还不过瘾&#xff0c;希望内容可以更加深入。因此&#x…...

[服务器-数据库]MongoDBv7.0.4不支持ipv6访问

文章目录 MongoDBv7.0.4不支持ipv6访问错误描述问题分析错误原因解决方式 MongoDBv7.0.4不支持ipv6访问 错误描述 报错如下描述 Cannot connect to MongoDB.No suitable servers found: serverSelectionTimeoutMS expired: [failed to resolve 2408]问题分析 首先确定其是…...

OpenClaw跨平台部署:nanobot镜像在mac/Windows双系统实测

OpenClaw跨平台部署&#xff1a;nanobot镜像在mac/Windows双系统实测 1. 为什么选择nanobot镜像 第一次听说nanobot这个轻量级OpenClaw镜像时&#xff0c;我正被本地部署大模型的资源消耗问题困扰。作为一个经常在macOS和Windows双系统切换的开发者&#xff0c;我需要一个能在…...

陀螺匠企业助手-产品

1. 功能说明维护出售产品的基本信息数据&#xff0c;支持在添加商机/合同中进行选择。2. 进入产品页面路径&#xff1a;客户>产品管理>产品3. 新增产品功能说明&#xff1a;维护产品信息&#xff0c;添加完成的产品信息&#xff0c;可以在添加商机/合同中进行选择。新增产…...

多智能体协作四大架构模式:Subagents/Skills/Handoffs/Router完全指南

← 上一篇&#xff1a;AI大模型3月终局&#xff1a;商业化转向、智能体崛起与安全红线 → 下一篇&#xff1a;大模型推理加速2026&#xff1a;从500ms到80ms的完整优化路径 摘要 当单个 AI Agent 无法高效处理复杂任务时&#xff0c;多智能体系统&#xff08;Multi-Agent Sys…...

避坑指南:UR5e机器人SpeedL模式下的笛卡尔空间控制,如何避免奇异点和超限?

UR5e机器人SpeedL模式避坑实战&#xff1a;笛卡尔空间控制的三大安全策略 实验室里&#xff0c;机械臂突然发出刺耳的警报声——这可能是每个UR5e初学者都经历过的噩梦。当你在笛卡尔空间用SpeedL指令控制机器人画复杂轨迹时&#xff0c;关节超限、奇异点问题和自碰撞就像三个隐…...

Android架构组件

Android架构组件&#xff1a;构建现代化应用的利器 在移动应用开发中&#xff0c;良好的架构设计是保证应用稳定性和可维护性的关键。Google推出的Android架构组件&#xff08;Android Architecture Components&#xff09;为开发者提供了一套标准化工具&#xff0c;帮助简化开…...

打破数据标注瓶颈:Label Studio如何让AI训练效率提升300%?

打破数据标注瓶颈&#xff1a;Label Studio如何让AI训练效率提升300%&#xff1f; 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/labe…...

WarcraftHelper:魔兽争霸3终极优化指南 - 解锁现代硬件性能

WarcraftHelper&#xff1a;魔兽争霸3终极优化指南 - 解锁现代硬件性能 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为魔兽…...

从零搭建SRS流媒体服务器:实现RTMP推拉流的实战部署指南

1. 为什么选择SRS搭建流媒体服务器&#xff1f; 最近几年直播和实时视频的需求爆发式增长&#xff0c;很多开发者都在寻找轻量高效的流媒体服务器方案。我测试过不少开源方案&#xff0c;最终发现SRS&#xff08;Simple Realtime Server&#xff09;是最适合个人和小团队自建的…...

Meshroom 3D重建:从照片到三维模型的视觉魔法之旅

Meshroom 3D重建&#xff1a;从照片到三维模型的视觉魔法之旅 【免费下载链接】Meshroom 3D Reconstruction Software 项目地址: https://gitcode.com/gh_mirrors/me/Meshroom 你是否曾想过&#xff0c;如何将普通的二维照片转化为生动的三维模型&#xff1f;Meshroom正…...

ImageMagick安装后报错‘vcomp140.dll缺失’?手把手教你彻底解决Visual C++依赖问题

ImageMagick安装后报错‘vcomp140.dll缺失’&#xff1f;手把手教你彻底解决Visual C依赖问题 当你兴冲冲下载完ImageMagick准备大展身手时&#xff0c;命令行却突然弹出一串红色错误提示——"无法启动程序&#xff0c;因为计算机中丢失vcomp140.dll"。这种场景对于…...