ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Apache Pulsar 本地单机模式(Standalone)快速上手指南:安装、启动、收发消息与停止

Apache Pulsar 本地单机模式(Standalone)快速上手指南:安装、启动、收发消息与停止 消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载本文以 Apache Pulsar 仓库中的 getting-started-standalone.md 为骨架结合仓库内的源码如 PulsarStandalone.java、PulsarStandaloneStarter.java与真实配置文件conf/standalone.conf、conf/pulsar_env.sh展开帮助你在本机用一条命令跑起完整的 Pulsar 单机实例完成从下载、解压、启动、收发消息到优雅停止的全流程并为生产集群部署打下基础。一、Standalone 模式是什么对于本地开发与测试Pulsar 提供了standalone单机模式你只需在一台机器上、一个终端里就能运行起一个完整的 Pulsar 实例。从 getting-started-standalone.md 的说明可以看到standalone 模式把以下组件全部放进同一个 Java 虚拟机JVM进程中运行Pulsar broker负责消息的接收、路由与投递BookKeeper 组件负责消息数据的持久化存储RocksDB 组件作为本地元数据存储metadata store替代生产环境中独立部署的 ZooKeeper。从源码角度验证这一点在 PulsarStandalone.java 中可以看到该进程持有PulsarService broker、PulsarAdmin admin、LocalBookkeeperEnsemble bkEnsemble、WorkerConfig workerConfig等核心对象分别对应 broker、管理接口、本地 BookKeeper 集成与可选的 Function Worker。而 PulsarStandaloneStarter.java 会强制把元数据存储地址设置为本地zk:127.0.0.1:port形式并通过config.setRunningStandalone(true)标记当前运行在 standalone 模式下。如果目标是搭建生产环境请阅读 Deploying a Pulsar instance裸机部署指南不要在单机模式下承载生产流量。二、系统要求在开始安装前请确认本机满足以下条件操作系统Pulsar 支持 64 位macOS、Linux与WindowsJDK/JRE需要安装 64 位 JRE/JDK8 或更高版本JVM 位数broker 仅支持运行在 64 位 JVM 上32 位 JVM 无法启动 broker默认内存默认情况下Pulsar 会为 JVM 分配2G 堆内存。内存参数在哪里调整默认的 2G 堆内存配置定义在 conf/pulsar_env.sh 中PULSAR_MEM${PULSAR_MEM:--Xms2g -Xmx2g -XX:MaxDirectMemorySize4g}-Xms2g -Xmx2gJVM 堆的初始与最大大小为 2G-XX:MaxDirectMemorySize4gNetty 等使用的直接内存上限为 4G。该变量支持被外部环境变量覆盖脚本采用${PULSAR_MEM:-...}的默认值语法。调整方式有两种直接修改conf/pulsar_env.sh中的PULSAR_MEM在启动前设置环境变量例如$ export PULSAR_MEM-Xms1g -Xmx1g -XX:MaxDirectMemorySize2g除此之外conf/pulsar_env.sh 还定义了 GC 参数PULSAR_GC默认使用 G1GC与 GC 日志参数PULSAR_GC_LOG会根据 Java 8 / JDK 9 自动切换日志语法这些都属于额外传给 JVM 的选项。三、安装 Pulsar Standalone3.1 下载二进制发行包Pulsar 官方发布预编译的二进制 tarball下载方式有以下几种从 Apache 镜像站下载apache-pulsar-version-bin.tar.gz二进制发行包进入 Pulsar 官方 downloads 页面或 releases 页面选择对应版本使用wget命令行下载URL 以你选择的版本对应的官方下载地址为准$ wget pulsar-二进制发行包下载地址下载完成后解压并进入目录$ tar xvfz apache-pulsar-version-bin.tar.gz $ cd apache-pulsar-version3.2 二进制包包含哪些内容解压后发行包初始包含以下目录目录内容binPulsar 的命令行工具如pulsar与pulsar-adminconfPulsar 的配置文件包括 broker 配置 等examples包含 Pulsar Functions 示例的 Java JAR 包instances为 Pulsar Functions 创建的运行构件artifactslibPulsar 运行所需的 JAR 文件licenses各类组件对应的.txt格式许可文件另外还有两个目录是在开始运行 Pulsar 后才会创建的目录内容dataRocksDB 与 BookKeeper 使用的数据存储目录logs安装产生的日志目录3.3 关于 conf 目录与 RocksDB 配置值得特别说明的是 conf/standalone.conf —— 它是 standalone 模式的核心配置文件。standalone 使用RocksDB 作为本地元数据存储相关配置包括# The metadata store URL metadataStoreUrl # The metadata store URL for the configuration data. If empty, we fall back to use metadataStoreUrl configurationMetadataStoreUrl brokerServicePort6650 webServicePort8080metadataStoreUrl元数据存储地址standalone 启动器会自动将其强制覆盖为本地地址见 PulsarStandaloneStarter.java因此文件中保留空值即可brokerServicePort6650broker 的消息服务端口Pulsar 协议webServicePort8080HTTP 管理端口clusterNamestandalone当前集群名standalone 模式下默认为standalone。在 conf/standalone.conf 中还有一组 RocksDB 专属调优项## RocksDB specific configurations ## DbLedgerStorage uses RocksDB to store the indexes from ## (ledgerId, entryId) - (entryLog, offset) # Size of RocksDB block-cache. For best performance, this cache # should be big enough to hold a significant portion of the index # database which can reach ~2GB in some cases # Default is to use 10% of the direct memory size dbStorage_rocksDB_blockCacheSize # Other RocksDB specific tunables dbStorage_rocksDB_writeBufferSizeMB4 dbStorage_rocksDB_sstSizeInMB4 dbStorage_rocksDB_blockSize4096RocksDB 在 BookKeeper 的DbLedgerStorage中负责维护从(ledgerId, entryId)到(entryLog, offset)的索引映射。dbStorage_rocksDB_blockCacheSize默认取直接内存的 10%当索引库较大某些场景可达约 2GB时建议调大以提升性能RocksDB 更完整的调优参数可参考其官方选项文件示例与 tuning guide。3.4 可选安装内置连接器builtin connectors从2.1.0-incubating版本开始Pulsar 会单独发布一个包含全部builtin连接器的二进制发行包。如果你需要用到 Pulsar IO 连接器按以下步骤安装下载pulsar-io-connector-version.nar格式的连接器文件从 Apache 镜像、官方 downloads 页面或 releases 页面获取在 pulsar 目录下创建connectors目录并把.nar文件放进去例如 aerospike 连接器$ mkdir connectors $ mv pulsar-io-aerospike-version.nar connectors $ ls connectors pulsar-io-aerospike-version.nar ...注意事项在裸机集群中需要确保connectors包在每一个 broker 的 pulsar 目录下都解压一份若 Pulsar Functions 使用独立 worker 集群则要在每个 function-worker 的 pulsar 目录下都放一份如果使用 Docker 运行 Pulsar 或以 Docker 镜像部署如 K8S、DC/OS可直接使用apachepulsar/pulsar-all镜像——该镜像已内置全部 builtin 连接器。不安装连接器不影响 Pulsar 本身的运行可跳过本步骤直接进入 3.5 或第四节启动流程。3.5 可选安装分层存储 offloaderstiered storage offloaders从2.2.0版本开始Pulsar 单独发布包含分层存储 offloaders的二进制发行包。如需启用 分层存储 能力请在每个 broker 节点上执行下载并解压 offloaders tarball把解压出的offloaders目录复制到 pulsar 根目录$ tar xvfz apache-pulsar-offloaders-version-bin.tar.gz // 解压后在 pulsar 目录下会出现名为 apache-pulsar-offloaders-version 的目录 // 将其中的 offloaders 复制出来 $ mv apache-pulsar-offloaders-version/offloaders offloaders $ ls offloaders tiered-storage-jcloud-version.nar分层存储的具体配置方法见 Tiered storage cookbook。同样的注意事项裸机集群中offloaders包需要解压到每个 broker 的 pulsar 目录Docker/K8S/DC/OS 场景可直接使用已内置 offloaders 的apachepulsar/pulsar-all镜像。四、启动 Pulsar Standalone4.1 前台启动拿到最新的发行包后使用bin目录下的pulsar命令并指定 standalone 模式即可启动本地集群$ bin/pulsar standalone启动成功后终端会出现一系列INFO级别日志例如21:59:29.327 [DLM-/stream/storage-OrderedScheduler-3-0] INFO org.apache.bookkeeper.stream.storage.impl.sc.StorageContainerImpl - Successfully started storage container (0). 21:59:34.576 [main] INFO org.apache.pulsar.broker.authentication.AuthenticationService - Authentication is disabled 21:59:34.576 [main] INFO org.apache.pulsar.websocket.WebSocketService - Pulsar WebSocket Service started这几条日志分别表明BookKeeper 存储容器启动成功、broker 认证服务已启动默认关闭认证、WebSocket 服务已就绪。至此一个包含 broker BookKeeper RocksDB 的单机 Pulsar 实例已经对外服务。从源码看standalone 启动器还提供以下可选参数见 PulsarStandaloneStarter.java 与 PulsarStandalone.java--no-broker只启动 BookKeeper不启动 broker--only-broker只启动 broker不启动 BookKeeper二者互斥不能同时使用。4.2 使用要点与安全提醒服务占用当前终端standalone 服务运行在你的终端中并受其直接控制需要执行其他命令时请另开一个终端窗口后台运行也可以使用bin/pulsar-daemon start standalone将服务作为后台进程运行相关命令见pulsar-daemon默认无安全认证默认情况下standalone 不配置加密、认证或授权任何能访问该机器网络地址的远端主机都可以无授权访问。请务必阅读 Security Overview 了解如何加固你的部署自动创建 namespace启动本地 standalone 集群时会自动创建一个public/defaultnamespace该 namespace 专门用于开发测试。Pulsar 的所有 topic 都归属于某个 namespace 之下关于 topic 的更多说明见 Topics。五、使用 Pulsar Standalone 收发消息Pulsar 提供名为pulsar-client的 CLI 工具可以在运行中的集群里对 topic 执行消息的消费与生产。其底层实现位于 pulsar-client-tools并通过--url参数指定要连接的 broker 地址默认连接pulsar://localhost:6650。5.1 消费消息使用订阅名first-subscription消费my-topic上的消息$ bin/pulsar-client consume my-topic -s first-subscription消费成功后pulsar-client日志中会出现如下确认信息22:17:16.781 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully consumed这条日志来自 CmdConsume.java 中的LOG.info({} messages successfully consumed, numMessagesConsumed)其中numMessagesConsumed是本次实际消费的消息条数。5.2 生产消息向my-topic生产一条内容为hello-pulsar的消息$ bin/pulsar-client produce my-topic --messages hello-pulsar发布成功后日志中会出现22:21:08.693 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced对应源码位于 CmdProduce.java 的LOG.info({} messages successfully produced, numMessagesSent)。produce子命令还支持更多参数见 CmdProduce.java-m, --messages要发送的消息内容与-f二选一默认分隔符为逗号-f, --files以逗号分隔的待发送文件路径列表与-m二选一-n, --num-produce消息或文件重复发送的次数-r, --rate发送速率控制。5.3 关于 topic 的自动创建细心的读者会发现在消费或生产之前我们并没有显式创建my-topic。这正是 Pulsar 的便捷特性之一对一个尚不存在的 topic 执行消费时Pulsar 会自动创建该 topic对一个尚不存在的 topic 执行生产时同样会自动创建该 topic。因此在上面的示例中my-topic是在第一条命令执行时被自动创建出来的。六、停止 Pulsar Standalone停止前台运行的 standalone 服务直接在该终端按CtrlC即可。如果服务是通过bin/pulsar-daemon start standalone在后台启动的则使用对应命令停止$ bin/pulsar-daemon stop standalone关于pulsar-daemon的更多参数说明参见pulsar-daemon文档。从源码角度看standalone 进程在 PulsarStandaloneStarter.java 注册了 JVM shutdown hook进程退出时会依次停止 Function WorkerfnWorkerService.stop()并关闭 brokerbroker.close()保证数据与元数据能够安全落盘。七、小结至此你已经完成了一次完整的 Pulsar standalone 体验确认系统满足 64 位 JDK 8 要求下载并解压二进制发行包理解bin、conf、examples、lib等目录的用途按需可选安装内置连接器与分层存储 offloaders通过bin/pulsar standalone在单 JVM 中启动 broker BookKeeper RocksDB使用pulsar-client完成消息的生产与消费topic 自动创建使用CtrlC或pulsar-daemon stop standalone优雅停止服务。Standalone 模式是学习和开发 Pulsar 应用的最佳起点。当你需要验证多节点行为、故障转移或生产级容量时可以从裸机部署指南 Deploying a Pulsar instance 开始逐步过渡到集群模式。赞分享消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载相关推荐Backstage 后端调度器数据库结构详解backstage_backend_tasks__tasks 表如何支撑分布式任务调度Backstage 后端调度器数据库结构详解 backstage_backend_tasks__tasks 表如何支撑分布式任务调度 本文以 report s消息队列后端流处理Apache Pulsar 在 Docker 中运行 standalone 单机模式本地开发与消息收发实战指南Apache Pulsar 在 Docker 中运行 standalone 单机模式本地开发与消息收发实战指南 本篇技术指南以 Apache Pulsar 官消息队列后端流处理Apache Pulsar 本地 Standalone 模式安装部署实战指南单机快速体验与生产部署路径Apache Pulsar 本地 Standalone 模式安装部署实战指南单机快速体验与生产部署路径 导读 本文以 Apache Pulsar 的 Sta消息队列后端流处理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表