服务器间消息通信方案

 

问题描述:

1、背景

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

2、问题

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

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

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

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

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

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

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


引用文字### 题目描述videojs播放实时HLS流报错:7.6.0-video.js:142 VIDEOJS: ERROR: TypeError: ...