服务器间消息通信方案

发布于 2022-09-11 21:58:20 字数 744 浏览 24 评论 0

1、背景

目前在做一个关于prometheus+micrometer的监控系统,指标数据都是系统使用micrometer api注册为指标(存储在 内存中),然后通过 actuator暴露端点给 prometheus拉取的

2、问题

因为 指标注册的这个服务是个集群,通过kafka接收来自 业务方的指标数据,那么就只有一台服务器会受到某个指标的消息,也就是只有这台服务器的内存中会有这个指标,其他服务器没有,因此是 单点。
如果 要 做成 高可用的,那么我就需要把 三台服务器的端点URL(域名+/endpoint)都暴露给 prometheus,ngx层做负载,想当然地当一段时间后,应该每台服务器都会有这个指标的,因为业务方一直再推送,那么ngx是默认的轮询方式,应该可以的,但是 却不能保证。

所以 想在 某台服务器接收到 指标消息的同时,去通知其他服务器 也都去注册这个指标,会有重复注册问题,但是不会有问题,即 怎样优雅地进行 服务器间通信(广播)?(终于问倒问题了)

项目使用的redis cluster,非MS,不能使用 PUB-SUB
MQ系列太重,且目前没有现成的服务,还得搭

--------------补充下------------

指标都会存储到redis,目前想的是每台服务器起个定时任务,定时从redis读取然后再注册,肯定会有重复注册问题

--------补充下数据流转-------

业务方 -(kafka)> 指标注册服务(集群) -> prometheus

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

以歌曲疗慰 2022-09-18 21:58:20

没太看懂这个数据流转过程
prometheus本来就应该监控到每一个节点,不应该把节点藏在反代后面
另外服务注册发现直接用现成的东西就好,有的还可以和prometheus直接集成

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文