分布式多级服务器架构设计构思

基础分析

数据通道

  • Web Http通道
  • Web ZMQ 通道
  • C# ZQM req-rep 通道
  • C# ZMQ sub-pub 通道
  • Java ZQM req-rep 通道
  • Java ZMQ sub-pub 通道
  • UDP 音频流通道

无中心多级分布式服务器

元数据

  • Mysql 静态数据
  • Mysql 动态数据(设备状态和会话状态)
  • 媒体库数据(mp3与录音文件)
  • 终端实时状态与会话实时状态

授权机制

分布式节点授权规范

  • 每个子节点相互独立, 子节点为一个完整的服务器,其正常运行不依赖其他节点.
  • 每个子节点之间代码实现层上完全对等, 由数据库配置数据,决定其主从关系.
  • 父节点自然拥有子节点的授权访问,简称授权感染性
  • 父节点需要数据库中配置IP , 授权账户和密码远程登陆到子节点后方能访问子节点数据

授权用例

独立性

  • A,B1,B2,C1,C2,C3,C4节点均为一台完整的服务器, 其他任意一台服务器崩溃或者断点均不影响其他服务器独立正常工作

授权访问

  • 每个节点均需要配置授权账户和密码后才能运行其他节点访问. 授权账户与客户端登陆账户不同.
    若节点未配置授权信息,则任何节点都无法直接访问该节点
  • 节点A 若想访问节点C4, 需要拥有C4的授权账户和密码验证后才能完成登陆

感染性访问

  • B2拥有C3,C4的授权访问, 若A 拥有B2的授权访问, 则A将同时拥有B2,C3,C4的授权访问信息

线性化访问

若A拥有B1,B2的授权访问, B1拥有C1,C2的授权, B2拥有C3,C4的授权访问, 那么A将拥有B1,B2,C1,C2,C3,C4各个节点的访问权限. A对子节点B1的访问与孙节点C3的访问流程完全一致

客户端跨节点访问

数据通道

  • C# ZQM req-rep 通道
  • C# ZMQ sub-pub 通道
  • UDP 音频流通道

场景假设

A 拥有B1,B2的授权访问. A上的客户端向播放音乐到B1,B2节点的硬件终端上

跨区访问的差异

  • 跨区访问音频流通道将音频流直接推送值目标子节点B1,B2,数据不经过自身服务器中转
  • 客户端的订阅通道将A节点上的java服务器代理订阅跨区的B1,B2子节点服务器信息. 客户端通过订阅A节点上的另外一个通道(端口号不一致)获取数据
  • 客户端需向A节点发送对B1,B2的请求, 需在客户端上做特殊标志处为跨区请求. 跨区请求目标位为A节点. 由A节点代理向跨区节点转发请求到B1,B2.

Web跨节点访问

场景假设

  • B2拥有C3,C4的授权访问, B2上将获得C3’,C4’的镜像数据库. B2上的web想修改C3,C4

访问机制

  • web将直接访问B2服务器上的C3’,C4’镜像服务器,查询相关配置信息
  • web对C3’,C4’数据库的修改,将由B2上的JAVA服务器将 SQL修改请求推送至目标子节点上,并执行数据库操作
  • 修改后的C3’,C4’数据库将有C3,C4负责更新

数据跨节点同步


- 若A获得了C1,C3的授权访问, A将C1,C3上的数据库采用主从同步的方式,将A节点上C1’ , C3’数据库镜像同步至最新. 并且将C1,C3上的媒体库自动同步更新到A节点上

困难点

  • 数据库的主从同步
  • 文件服务器同步
  • 同步延时性问题

终端广播与对讲跨区访问

场景假设

A拥有C1, C3节点的授权访问. A节点上一终端D想要广播音频至C1,C3 节点

访问机制

  • A节点将代理向C1,C3节点查询是否可以执行广播
  • 若请求成功, 则分别在A, C1,C3服务器上建立会话通道, 将D终端的上的音频由A节点转发至C1,C3
  • 若A节点或者其子节点上的会话删除, 则会话将中断

备注: 广播对讲仅支持父节点想子节点申请对讲

报警风暴

场景假设

A 拥有B1,B2,C1,C2,C3,C4节点的访问权限. 且A节点中设置了全区报警机制. 若A节点上一报警终端被触发.则B1,B2,C1,C2,C3,C4中均需建立会话, 播放报警

访问机制

  • A节点将分别向B1,B2,C1,C2,C3,C4发送报警音频播放请求, 若请求成功,A节点除需要将A节点上的终端推送音频外, 还需要分别向B1,B2,C1,C2,C3,C4节点服务器推送音频.
  • 子节点服务器接受到音频流之后, 再更加路由表推送至各个硬件终端

总结

此类多级分布式方案为无中心分布式.每个节点之间协商自洽处理相应的隶属逻辑.

缺点:
- 各个节点之间的隶属关系缺乏统一服务调度管理,容易形成环形闭环
- 多级关系复杂

星型模型多级分布式模型

为解决无中心多级分布式服务器管理混乱的问题. 将多级的职责(各个节点之间的关系)交给中心调度服务进行统一管理. 将多级的概念转换为 规则管理服务处理

待续

转载需知

作者:苍原狮啸
QQ : 1902115681

你可能感兴趣的:(JAVA)