下一代MQ中间件,不来了解下?

哈喽,大家好,我是指北君 。
最近项目中准备使用消息中间件Apache Pulsar,借着机会先做个简单了解吧 。
Apache PulsarApache Pulsar是Apache软件基金会顶级项目,是下一代云原生分布式消息流平台 。
Pulsar 作为下一代云原生分布式消息流平台,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐以及低延时的高可扩展流数据存储特性,内置诸多其他系统商业版本才有的特性,是云原生时代解决实时消息流数据传输、存储和计算的最佳解决方案 。

下一代MQ中间件,不来了解下?

文章插图
Pulsar简介
  • 系统架构

下一代MQ中间件,不来了解下?

文章插图
  • 功能特色
    租户和命名空间(namespace)是 Pulsar 支持多租户的两个核心概念 。在租户级别,Pulsar 为特定的租户预留合适的存储空间、应用授权与认证机制 。在命名空间级别,Pulsar 有一系列的配置策略(policy),包括存储配额、流控、消息过期策略和命名空间之间的隔离策略 。
    Pulsar 做了队列模型和流模型的统一,在 Topic 级别只需保存一份数据,同一份数据可多次消费 。以流式、队列等方式计算不同的订阅模型大大提升了灵活度 。
    Pulsar 使用计算与存储分离的云原生架构,数据从 Broker 搬离,存在共享存储内部 。上层是无状态 Broker,复制消息分发和服务;下层是持久化的存储层 Bookie 集群 。Pulsar 存储是分片的,这种构架可以避免扩容时受限制,实现数据的独立扩展和快速恢复 。
    Pulsar 原生支持跨地域复制,因此 Pulsar 可以跨不同地理位置的数据中心复制数据 。当数据中心中断或网络分区时,在多个数据中心存有消息副本尤为重要,提高可用性 。
    Pulsar Functions 是基于 Pulsar 的轻量级流处理方式 。Pulsar Functions 直接部署在 broker 节点上(或作为 Kube.NETes 集群中的容器) 。通过 Pulsar Functions,Pulsar 可以直接解决许多流处理任务,简化操作 。?
  • 支持客户端
JAVA 客户端
C++ 客户端
.Net/C# 客户端
Go 客户端
NodeJS 客户端
Ruby 客户端
Pulsar安装与部署目前Pulsar不支持Window,下面通过Docker进行安装,可以参考官网??https://pulsar.apache.org/docs/next/getting-started-docker/?? 
同时可以安装Pulsar Manager,具体操作可以参考官方文档 ??https://pulsar.apache.org/docs/next/administration-pulsar-manager/??
其中Pulsar Manager 是一个网页式可视化管理与监测工具,支持多环境下的动态配置 。可用于管理和监测租户、命名空间、topic、订阅、broker、集群等 。
  1. window环境使用docker推荐使用Docker Desktop,和linux一样可以通过docker命令管理镜像、部署容器等操作 。
打开并启动Docker Desktop后,在终端执行命令执行 
_> docker search pulsar 
可以查询到pulsar相关的镜像
下一代MQ中间件,不来了解下?

文章插图
  1. 镜像下载
这里我们选择分别下载红框的两个镜像,执行命令 
_> docker pull apachepulsar/pulsar _> docker pull apachepulsar/pulsar-manager
  1. 启动
  • 启动Pulsar
docker run -it -p 6650:6650 -p 8080:8080--mount source=pulsardata,target=/pulsar/data--mount source=pulsarconf,target=/pulsar/confapachepulsar/pulsar bin/pulsar standalone启动Pulsar Managerdocker run --name pulsar-manager -dit-p 9527:9527 -p 7750:7750-e SPRING_CONFIGURATION_FILE=/pulsar-manager/pulsar-manager/Application.propertiesapachepulsar/pulsar-manager添加用户:
for /f "tokens=1" %A in ('curl http://localhost:7750/pulsar-manager/csrf-token') do set CSRF_TOKEN=%Acurl -X PUT "X-XSRF-TOKEN: %CSRF_TOKEN%"-H "Cookie: XSRF-TOKEN=%CSRF_TOKEN%;"-H "Content-Type: application/json" -d "{"name": "admin", "password": "123456", "description": "super user admin", "email": "admin@test.com"}""http://localhost:7750/pulsar-manager/users/superuser"访问:
http://localhost:9527/ 用户名密码:admin/123456


推荐阅读