Pulsar简介及其安装

Pulsar简介及其安装

简介

    Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体。该系统源于 Yahoo,
最初在 Yahoo 内部开发和部署,支持 Yahoo 应用服务平台 140 万个主题,日处理超过 1000 亿条消息。Pulsar 于 2016 年由 Yahoo 开源并捐赠给 
Apache 软件基金会进行孵化,2018 年成为 Apache 软件基金会顶级项目。
Pulsar 作为下一代云原生分布式消息流平台,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐以及低延时的高可扩展流数据存储特性,
内置诸多其他系统商业版本才有的特性,是云原生时代解决实时消息流数据传输、存储和计算的最佳解决方案。

Apache Pulsar 提供了统一的消费模型,支持 Stream(如 Kafka)和 Queue(如 RabbitMQ)两种消费模型, 支持 exclusive、failover 和

shared 三种消费模式。同时,Pulsar 提供和 Kafka 兼容的 API,以及 Kafka-On-Pulsar(KoP) 组件来兼容 Kafka 的应用程序,KoP 在

Pulsar Broker 中解析 Kafka 协议,用户不用改动客户端的任何 Kafka 代码就能直接使用 Pulsar。

目前,Apache Pulsar 已经应用部署在国内外众多大型互联网公司和传统行业公司,案例分布在人工智能、金融、电信运营商、直播与短视频、物联网、

零售与电子商务、在线教育等多个行业,如美国有线电视网络巨头 Comcast、Yahoo!、腾讯、中国电信、中国移动、BIGO、VIPKID 等。

目前 Apache Pulsar 项目原生核心贡献者已组成创业公司 StreamNative,进一步为 Apache Pulsar 提供更好的企业级服务支持与生态建设。

特征

  • Pulsar实例中对多个集群的本地支持,支持跨集群的消息无缝地理复制。
  • 非常低的发布和端到端延迟。
  • 无缝的可伸缩性,超过一百万个主题。
  • 一个简单的客户端API,为Java, Go, Python和c++绑定。
  • 主题的多种订阅类型(独占、共享和故障转移)。
  • 使用Apache BookKeeper提供的持久消息存储来保证消息传递。无服务器轻量级计算框架Pulsar Functions提供了流原生数据处理功能。
  • 无服务器连接器框架Pulsar IO构建在Pulsar Functions之上,可以更容易地将数据移进和移出Apache Pulsar。
  • 当数据老化时,Tiered Storage offloads将数据从热/热存储卸载到冷/长期存储(如S3和GCS)

Pulsar 本地安装与运行Pulsar集群

对于本地开发和测试,您可以在机器上以独立模式运行Pulsar。独立模式在单个Java虚拟机(JVM)进程中运行所有组件。

安装

jdk版本映射关系

在安装pulsar之前,我们需要了解pulsar相关对应的java的版本信息,如下:

pulsar运行时Java版本推荐

  • pulsar 版本 > 2.10 and master 分支:
Pulsar组件 Java版本
Broker 17
Functions / IO 17
CLI 17
Java Client 8 or 11 or 17
  • 2.8 <= pulsar 版本 <= 2.10:
Pulsar组件 Java版本
Broker 11
Functions / IO 11
CLI 8 or 11
Java Client 8 or 11
  • pulsar 版本 < 2.8:
Pulsar组件 Java版本
Broker 8 or 11
Functions / IO 8 or 11
CLI 8 or 11
Java Client 8 or 11

下载

shell 复制代码
/usr/local/pulsar$ wget https://archive.apache.org/dist/pulsar/pulsar-2.10.2/apache-pulsar-2.10.2-bin.tar.gz

解压

shell 复制代码
/usr/local/pulsar$ tar -xvfz apache-pulsar-2.10.2-bin.tar.gz

Pulsar 本地安装与运行Pulsar集群

对于本地开发和测试,您可以在机器上以独立模式运行Pulsar。独立模式在单个Java虚拟机(JVM)进程中运行所有组件。

安装

jdk版本映射关系

在安装pulsar之前,我们需要了解pulsar相关对应的java的版本信息,如下:

pulsar运行时Java版本推荐

  • pulsar 版本 > 2.10 and master 分支:
Pulsar组件 Java版本
Broker 17
Functions / IO 17
CLI 17
Java Client 8 or 11 or 17
  • 2.8 <= pulsar 版本 <= 2.10:
Pulsar组件 Java版本
Broker 11
Functions / IO 11
CLI 8 or 11
Java Client 8 or 11
  • pulsar 版本 < 2.8:
Pulsar组件 Java版本
Broker 8 or 11
Functions / IO 8 or 11
CLI 8 or 11
Java Client 8 or 11

下载

shell 复制代码
/usr/local/pulsar$ wget https://archive.apache.org/dist/pulsar/pulsar-2.10.2/apache-pulsar-2.10.2-bin.tar.gz

解压

shell 复制代码
/usr/local/pulsar$ tar -xvfz apache-pulsar-2.10.2-bin.tar.gz

解压目录介绍

解压出来的目录结构如下:

  • bin:pulsar入口点脚本,以及许多其他命令行工具
  • conf:配置文件,包括broker.conf,zookeeper.conf等
  • lib:Pulsar使用的jar包
  • examples:pulsar函数示例
  • instances:Artifacts for Pulsar Functions
  • data:数据目录
  • logs:日志目录

启动

shell 复制代码
/usr/local/pulsar/apache-pulsar-2.10.2$ sudo ./bin/pulsar standalone


提示:如果我们想使用后台进程去启动pulsar的话,可以使用bin/pulsar-daemon start standalone命令。当plusar集群启动的完成之后,会默认

创建一个public/default命名空间,此名称空间用于开发目的,所有Pulsar主题都在名称空间中管理。

创建topic

shell 复制代码
/usr/local/pulsar/apache-pulsar-2.10.2$ sudo ./bin/pulsar-admin topics create persistent://public/default/my-topic

如果topic已经存在,会报如下错误:

发送消息

可以使用pulsar命令行工具将消息写入主题。在实践中,您将在应用程序代码中使用Producer API,或Pulsar IO
连接器将数据从其他系统拉到Pulsar。
shell 复制代码
/usr/local/pulsar/apache-pulsar-2.10.2$ sudo ./bin/pulsar-client produce my-topic --messages 'Hello message'

消费消息

 在实践中,您将在应用程序代码中使用Consumer API,或者使用Pulsar IO连接器从Pulsar读取数据以推送到其他系统。
shell 复制代码
/usr/local/pulsar/apache-pulsar-2.10.2$ sudo ./bin/pulsar-client consume my-topic -s 'my-subscription' -p Earliest -n 0

Earliest意味着从最早的未使用的消息进行消费。-n:配置要消耗的消息数量,0表示永远消耗.

停止

可以使用Ctrl+C终止相关进程
相关推荐
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck2 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei2 小时前
java的类加载机制的学习
java·学习
昌sit!3 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
Yaml44 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~4 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616884 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
aloha_7894 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java5 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
睡觉谁叫~~~5 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust