Skip to content

实现原理 运行时后端检查数据的管理

chance edited this page Jun 15, 2020 · 1 revision

由于某个后端的检查是由多个worker通过竞争方式来完成的,那么就存在进程间数据通信的问题。

因此这里我们用了nginx框架封装的共享内存结构来存储所有peer的运行数据。

谁来更新这个状态数据?

这个很简单,本轮哪个worker负责检查,就由谁来更新共享内存中peer的状态(rise_count, fail_count, status)

谁会读取这个状态数据?

  1. 接收用户网络请求的worker 当收到一个http/tcp/udp请求时, worker间会通过锁竞争最终由某个worker来处理此请求。 当次worker通过负责均衡算法选择后端的时候,会调用我们提供的peer状态查询API函数来综合选择后端(既符合负载算法,又保证此后端是UP的状态) 此API会从共享内存读取此peer当前的状态(up/down)

  2. 后端状态查询模块 我们提供了一个用来查询后端当前状态数据的API,当调用此API时,会从共享内存中读取数据,并整理成指定格式返回(html/json/csv)