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

Apache Pulsar的分布式集群模式构建

1. 准备环境

6台带jdk8的Linux服务器(CentOS7为例)

ip分别为:

主机名IP地址
zookeeper1192.168.8.101
zookeeper2192.168.8.102
zookeeper3192.168.8.103
pulsar1192.168.8.108
pulsar2192.168.8.109
pulsar3192.168.8.110

2. 下载Pulsar最新安装包

下载地址:Apache Pulsar

3. 构建

搭建Pulsar集群全少需要3个组件:ZooKeeper集群、BookKeeper集群和broker集群(Broker是Pulsar的自身实例)。这
三人集群组件如下:

  • ZooKeeper集群(3个ZooKeeper节点组成)
  • bookie集群(也称为BookKeeper集群,3个BookKeeper节点组成)
  • broker集群(3个Pulsar节点组成)

Pulsar的安装包已包含了搭建集群所需的各个组件库。无需单独下载ZooKeeper安装包和BookKeeper安装包。(在实际
中,zookeeper我们并不仅仅应用在pulsar上,包括HBase等其他的组件也需要依赖,所以我们此处zookeeper使用外置zk集群环境

注意:如果是在内网测试环境搭建集群,为了避免防火墙造成端口开启繁琐,可以关闭服务器防火墙

第一步: 将下载的pulsar安装包上传到linux服务器, 并解压

cd /usr/local
上传apache-pulsar-2.8.1-bin.tar.gztar -zxvf apache-pulsar-2.8.1-bin.tar.gzmv apache-pulsar-2.8.1 pulsar

第二步: 修改bookkeeper集群配置文件

cd /usr/local/pulsar/conf/
vim bookkeeper.conf修改其第56行:修改本地ip地址(版本不一样位置可能不一样)
advertisedAddress=pulsar1
修改其39行:(版本不一样位置可能不一样)
journalDirectory=/usr/local/pulsar/tmp/journal
修改其389行:(版本不一样位置可能不一样)
ledgerDirectories=/usr/local/pulsar/tmp/ledgers
修改617行:(版本不一样位置可能不一样)
zkServers=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181

第三步: 修改broker集群的配置文件

cd /usr/local/pulsar/conf/
vim broker.conf修改第98行:修改集群的名称(版本不一样位置可能不一样)
clusterName=pulsar-cluster
修改第23行:配置zookeeper地址(版本不一样位置可能不一样)
zookeeperServers=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
修改第26行:配置zookeeper地址(版本不一样位置可能不一样)
configurationStoreServers=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
修改第44行:更改为本地ip地址(版本不一样位置可能不一样)
advertisedAddress=pulsar1

第四步: 将配置好bookies目录和brokers目录发送到第二台和第三台

cd /usr/local
scp -r pulsar/ pulsar2:$PWD
scp -r pulsar/ pulsar3:$PWD

第五步: 修改第二台和第三台的broker的地址和bookies地址

pulsar2:
cd /usr/local/pulsar/conf/
vim bookkeeper.conf
修改其第56行:修改本地ip地址
advertisedAddress=pulsar2vim broker.conf
修改第44行:更改为本地ip地址
advertisedAddress=pulsar2第三台节点:都更改为对应IP地址或者主机名即可

4. 启动

第一步: 首先启动zookeeper集群

启动命令在zookeeper1启动脚本中,三个同时启动
启动后注意查看状态,必须看到一个leader和两个follower才可以使用

第二步: 初始化元数据(此操作, 仅需要初始化一次即可)

此操作, 仅需要初始化一次即可

首先初始化Pulsar集群元数据:
cd /usr/local/pulsar/bin
./pulsar initialize-cluster-metadata \
--cluster pulsar-cluster \
--zookeeper zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 \
--configuration-store zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 \
--web-service-url http://pulsar1:8080,pulsar2:8080,pulsar3:8080 \
--web-service-url-tls https://pulsar1:8443,pulsar2:8443,pulsar3:8443 \
--broker-service-url pulsar://pulsar1:6650,pulsar2:6650,pulsar3:6650 \
--broker-service-url-tls pulsar+ssl://pulsar1:6651,pulsar2:6651,pulsar3:6651

接着初始化bookkeeper集群:若出现提示输入Y/N:请输入Y

./bookkeeper shell metaformat

第三步: 启动bookkeeper服务

cd /usr/local/pulsar/bin
./pulsar-daemon start bookie

注意:三个节点都需要依次启动

验证是否启动:可三台都检测

./bookkeeper shell bookiesanity

提示:
Bookie sanity test succeeded 认为启动成功

第四步: 启动Broker

cd /usr/local/pulsar/bin
./pulsar-daemon start broker

注意:三个节点都需要依次启动

检测是否启动:

./pulsar-admin brokers list pulsar-cluster

提示:

[root@node1 bin]# ./pulsar-admin brokers iist pulsar-cluster
"node1.itcast.cn:8080"
"node2.itcast.cn:8080"
"node3.itcast.cn:8080"

认为启动成功

5. 测试

在pulsar的bin目录下, 专门提供了一个pulsar-client的客户端工具, Pulsar-Clinet工具允许使用者在运行的集群中消费并发送消息到
Pulsar Topic中

1:模拟开启消费者监听数据

./pulsar-client consume persistent://public/default/test -s "consumer-test"

2:模拟生产一条数据

./pulsar-client produce persistent://public/default/test --messages "hello-pulsa"

6. Apache Pulsar的可视化监控部署

第一步: 下载Pulsar-Manager

下载地址:

https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.3.0/apache-pulsar-manager-0.3.0-bin.tar.gz

第二步: 上传到服务器, 并解压

cd /usr/local
上传apache-pulsar-manager-0.3.0-bin.tar.gz
解压操作:
tar -zxf apache-pulsar-manager-0.3.0-bin.tar.gzcd /usr/local/pulsar-manager
接着再次解压:
tar -xvf pulsar-manager.tar

第三步: 拷贝dist包到 pulsar-manager目录下并更名为ui

cd /usr/local/pulsar-manager/pulsar-manager
cp -r ../dist ui

第四步: 启动Pulsar

cd /usr/local/pulsar-manager/pulsar-manager
./bin/pulsar-manager

第五步: 初始化超级用户密码(只用执行一次)

CSRF_TOKEN=$(curl http://192.168.8.108:7750/pulsar-manager/csrf-token)
curl \-H 'X-XSRF-TOKEN: $CSRF_TOKEN' \-H 'Cookie: XSRF-TOKEN=$CSRF_TOKEN;' \-H "Content-Type: application/json" \-X PUT http://192.168.8.108:7750/pulsar-manager/users/superuser \-d '{"name": "pulsar", "password": "pulsar", "description": "test", "email": "username@test.org"}'

第六步: 访问Pulsar UI

http://192.168.8.108:7750/ui/index.html

用户名: pulsar
密码: pulsar

Apache Pulsar的可视化监控基本使用

第一步: 点击 + new Enirconment 构建新环境,连接pulsar

Environment Name

pulsar-cluster

Service URL

http://192.168.8.108:8080

Bookie URL

http://192.168.8.108:6650

相关文章:

Apache Pulsar的分布式集群模式构建

1. 准备环境 6台带jdk8的Linux服务器(CentOS7为例) ip分别为: 主机名IP地址zookeeper1192.168.8.101zookeeper2192.168.8.102zookeeper3192.168.8.103pulsar1192.168.8.108pulsar2192.168.8.109pulsar3192.168.8.110 2. 下载Pulsar最新安…...

第三百八十六回

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示…...

Java中介者模式剖析及使用场景

中介者模式 一、介绍二、智能家居系统项目实现三、总结1.优点2.缺点3.使用经验4.Spring框架类似使用思想 一、介绍 介者模式是一种行为型设计模式,它允许对象之间通过一个中介者对象进行通信,而不是直接相互引用。将多对多的关系转化为一对多的关系&…...

ElevenLabs用AI为Sora文生视频模型配音 ,景联文科技提供高质量真人音频数据集助力生成逼真音效

随着Open AI公司推出的Sora文生视频模型惊艳亮相互联网,AI语音克隆创企ElevenLabs又为Sora的演示视频生成了配音,所有的音效均由AI创造,与视频内容完美融合。 ElevenLabs的语音克隆技术能够从一分钟的音频样本中创建逼真的声音。为了实现这一…...

Go语言基础

Go的数据类型定义 //运行第一个程序package main func main(){print("Hello World") }在GO语言中,一个程序只能有一个main包,对应只能有一个main方法,若无法满足这个条件,编译时将会报错。注释方式与PHP相同 import的使…...

IOS覆盖率报告info文件解读

一,IOS覆盖率报告的生成 在做前端精准测试的时候,对于iOS端,通常会做如下操作: (1)合并覆盖率数据 如下操作: xcrun llvm-profdata merge coverage_file1657885040728.profraw coverage_fil…...

爬虫实战——scrapy框架爬取多张图片

scrapy框架的基本使用,请参考我的另一篇文章:scrapy框架的基本使用 起始爬取的网页如下: 点击每张图片,可以进入图片的详情页,如下: 代码实现: 项目文件结构如下 img_download.py文件代码 im…...

LLVM TableGen 系统学习笔记

Basic TableGen 系统可以帮助记录领域特定的信息。它也可以认为是一种小型的编译系统。 TableGen 责负分析文件, 分析结果交给领域特定的后端进行处理。 重要的概念 records 一个 record 有一个独立的名称,一系列值和一系列父类。 它保存了特定领域…...

基于stm32的流水灯设计

1基于stm32的流水灯设计[proteus仿真] 速度检测系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的自行车测速系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2¥&#xff0c…...

kotlin图片合成和压缩

kotlin图片合成和压缩 之前的方法是继承AsyncTask 在doInBackground 里面去做压缩的操作&#xff0c;然后用 publishProgress 切到主线程里面更新 新方法是在协程里的去做 class ImageService {private fun getSumWidths(bitmaps: ArrayList<Bitmap>): Int {var sumWid…...

Java学习笔记004——接口概念理解及意义

一个类中有抽象方法&#xff0c;则必须声明为abstract&#xff08;做为抽象类&#xff09;&#xff0c;抽象类不能实例化。子类继承抽象类&#xff0c;必须对所有的抽象方法重写&#xff0c;否则依然有抽象方法&#xff0c;还是抽象的&#xff0c;无法实例化。故抽象类常做为基…...

MT笔试题

前言 某团硬件工程师的笔试题&#xff0c;个人感觉题目的价值还是很高的&#xff0c;分为选择题和编程题&#xff0c;选择题考的是嵌入式基础知识&#xff0c;编程题是两道算法题&#xff0c;一道为简单难度&#xff0c;一道为中等难度 目录 前言选择题编程题 选择题 C语言中变…...

50道SQL面试题

50道SQL面试题 有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 环境 -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS teacher; CREATE TABLE teacher (t_id varchar(20) …...

2024蓝桥杯每日一题(双指针)

一、第一题&#xff1a;牛的学术圈 解题思路&#xff1a;双指针贪心 仔细思考可以知道&#xff0c;写一篇综述最多在原来的H指数的基础上1&#xff0c;所以基本方法可以是先求出原始的H指数&#xff0c;然后分类讨论怎么样提升H指数。 【Python程序代码】 n,l map(int,…...

Android 开发过程中常见的内存泄漏场景分析

场景1 Static变量存储上下文环境Context public class ClassName {// 定义1个静态变量private static Context mContext;//... // 引用的是Activity的contextmContext context; // 当Activity需销毁时&#xff0c;由于mContext 静态 & 生命周期 应用程序的生命周期&…...

Codeforces-1935E:Distance Learning Courses in MAC(思维)

E. Distance Learning Courses in MAC time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output The New Year has arrived in the Master’s Assistance Center, which means it’s time to introduce a new feature…...

ZooKeeper和Diamond有什么不同

本文主要是讨论下两个类似产品&#xff1a;ZooKeeper和Diamond在配置管理这个应用场景上的异同点。 Diamond&#xff0c;顾名思义&#xff0c;寄寓了开发人员对产品稳定性的厚望&#xff0c;希望它像钻石一样&#xff0c;提供稳定的配置访问。Diamond是淘宝网Java中间件团队的核…...

三、N元语法(N-gram)

为了弥补 One-Hot 独热编码的维度灾难和语义鸿沟以及 BOW 词袋模型丢失词序信息和稀疏性这些缺陷&#xff0c;将词表示成一个低维的实数向量&#xff0c;且相似的词的向量表示是相近的&#xff0c;可以用向量之间的距离来衡量相似度。 N-gram 统计语言模型是用来计算句子概率的…...

QML 3D入门知识路线

目前使用的版本 v5.14.0 模块导入 使用QML 3D时需要 import Qt3D.Core 2.14 核心模块类 V6以上的版本已经发布&#xff0c;所以有很多module会发生变化&#xff0c;主要有核心module、输入、逻辑、渲染、动画和扩展module&#xff0c;以及2D/3D场景模块 类名 能…...

蓝牙系列五:开源蓝牙协议BTStack框架代码阅读(1)

蓝牙学习系列,借鉴卫东上老师的蓝牙视频教程。 BTStack协议栈学习。首先来看一下,对于硬件操作,它是如何来进行处理的。在上篇文章中曾说过,在main函数里面它会调用硬件相关的代码,调用操作系统相关的代码。在BTStack中,可以搜索一下main.c,将会发现有很多main.c,都是…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...