惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
J
Java Code Geeks
V
V2EX
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
B
Blog
A
About on SuperTechFans
有赞技术团队
有赞技术团队
月光博客
月光博客
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
美团技术团队
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
N
Netflix TechBlog - Medium
C
Check Point Blog
Recent Announcements
Recent Announcements
博客园 - Franky
博客园 - 叶小钗
T
Tailwind CSS Blog

Hi,I`m lan

MCP协议新进展: 使用 Streamable HTTP 替换当前的 HTTP+SSE 实现。-liangyuanpeng 的博客 我的 AI 员工们开发的微信小程序上线了!-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog vercel 记录-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog [长期更新]cocos creator问题列表-liangyuanpeng 的博客 | liangyuanpeng's Blog go问题列表记录-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog node镜像的更多选择-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog containerd 中的弃用警告 - 为 2.0 做好准备!-liangyuanpeng 的博客 liangyuanpeng 的博客 | liangyuanpeng's Blog kep-1880-多服务CIDR-liangyuanpeng 的博客 | liangyuanpeng's Blog [长期更新]argoworkflow 的一些实践和思考-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 将Etcd作为一个kubernetes sig来运作-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog argoworkflow 云原生工作流引擎-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog kubecon china 2023将在上海举办-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog
部署去ZK后的Apache Pulsar-liangyuanpeng 的博客 | liangyua...
2022-06-06 · via Hi,I`m lan

TOC

前言

记录我的终端更新笔记 :(

当我们在说元数据中心的时候我们在说什么

Bookkeeper 和 Pulsar Broker 都有各自的元数据中心,并且都有自己的元数据中心接口,默认都是ZK.

要实现 Pulsar 去 Zookeeper 化的话意味着 Pulsar Broker 和 Bookkeeper 都需要拥有这样的能力. Bookkeeper 本身有 etcd 元数据中心接口的实现,但是 Pulsar Broker 也实现了 Bookkeeper 的元数据中心接口,我们这里讨论的 Bookkeeper 对接 etcd 也是使用 Pulsar Broker 自身实现的 Bookkeeper 元数据接口.而不是 Bookkeeper 自带的 etcd 元数据接口实现.

基本上有了这样的框架之后,后续 Pulsar 如果要发展自己的元数据中心会相对比较顺利.

本文示例会以 Pulsar 2.10.0 这个版本,其中配套的 Bookkeeper 版本是 4.14.4,这个版本的 Bookkeeper 的 autoRecovery 逻辑中依然是直接连接了 Zookeeper,因此需要启动时需要在bookkeeper.conf中把 autoRecoveryDaemonEnabled 设置为 false.

部署

部署相关的 yaml 都可以在pulsar-sigs/deploy-files中找到.

首先将仓库 clone 到本地:

git clone https://github.com/pulsar-sigs/deploy-files.git
cd deploy-files

以下 docker-compose 和 kubernetes 部署方式都会以这个仓库的文件作为基础.

docker-compose

kubernetes

$ cd kubernetes
$ kubectl apply -f .
service/bk created
service/bknp created
statefulset.apps/bk created
statefulset.apps/busybox created
service/etcd created
service/etcdnp created
statefulset.apps/etcd created
deployment.apps/pulsar-consumer created
job.batch/pulsar-init created
deployment.apps/pulsar-producer created
service/pulsar created
service/pulsarnp created
statefulset.apps/pulsar created
statefulset.apps/pulsarctl created
serviceaccount/pulsar created
role.rbac.authorization.k8s.io/pulsar created
clusterrole.rbac.authorization.k8s.io/pulsar created
rolebinding.rbac.authorization.k8s.io/pulsar created
clusterrolebinding.rbac.authorization.k8s.io/pulsar created

耐心等待一段时间后所有 Pod 都会处于 Running 状态.

$ kubectl get po
NAME                               READY   STATUS      RESTARTS   AGE
bk-0                               1/1     Running     0          2m38s
etcd-0                             1/1     Running     0          2m38s
pulsar-0                           1/1     Running     0          2m37s
pulsar-consumer-77f96bbf9d-bwspx   1/1     Running     1          2m38s
pulsar-init-gs5f4                  0/1     Completed   0          2m38s
pulsar-producer-9b46f7455-ndtsq    1/1     Running     1          2m37s
pulsarctl-0                        1/1     Running     0          2m38s

假设这时候所有的Pod都已经启动在 Running 了,我们可以看一下 pulsar-client consumer 这个 pod,他会不断的消费 pulsar topi c的消息,正常的话可以看到不断的有日志打印出来.

$ kubectl logs -f pulsar-consumer-77f96bbf9d-bwspx
...
2022/05/22 11:11:55 consume message: topic is persistent://public/default/lan-partition-0 , topic key is : and payload is :hello 
2022/05/22 11:11:56 consume message: topic is persistent://public/default/lan-partition-0 , topic key is : and payload is :hello 

可以看到不断的会有log打印, 这时基于 etcd 元数据中心的 pulsar 已经处于正常的工作状态了.

笔记

  1. function worker 会使用到 Dlog,直接连接的 Zookkeeper.
  2. 有状态的 pulsar function 会使用到 Bookkeeper 的 table service,而 table service 似乎也是连接ZK.

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode

温馨提示

本文还在持续创作中,如果你对本文主题感兴趣可以加我微信好友进行催更,博客下方可以找到我的微信联系方式 :)