『集群』004 Slithice 集群分布式(多个客户端,基于中央服务器的集群服务)

Slithice 集群分布式(多个客户端,基于中央服务器的多个集群服务端)

 

案例Demo展示:

集群架构图 如下:

如上图,上图 展示了 这个集群 的 结构:

       >一个中央服务器(可以有多个),负责 为 所有 集群成员服务端 或者 客户端 提供 配置数据

       >对外 暴露的 成员服务端 有 两个Socket服务端,两个WebService服务端;

       >两个 WCF服务端 不对外暴露,客户端 也不会从 中央服务器 得到 这两个WCF服务端的存在;

       >客户端 从 中央服务器 得知,自己可以调度 四个服务端,以及每个服务端可以处理的 Action;客户端 将会 按照配置 随机调度 服务端 获取 想要的数据。当 其中 某个服务端 崩溃时,客户端会 降低失败服务端的调度优先级,并试着调度 另外可以处理 Action的 其他服务端;

 

运行展示:

这里 用 WinCE客户端 做为测试, WinPC客户端 也就不做测试啦;

服务端:

客户端:



 

测试 Slithice.Core.Utils.ConfigurationManager 类的稳定性:

测试 WinCE 客户端 手动调度 独立Socket服务端 :


测试 WinCE 客户端 从中央服务器 获取调度配置,随机调度 集群服务端 :

  

 

运行说明:

上图的 WinCE客户端运行,我们可以 看到:

       >客户端 支持 手动设置 链接的服务器的调度对象,也支持 从 配置文件中 获取 链接服务器的调度对象;

>同一个 “配置” 按钮,随机 有 五个服务端 给出了 结果(只有 WebService 和 Socket —— WinCE 5.0 不支持 WCF);

>网格控件中,从 服务端 返回的是 一个 对象集合,这个 对象集合 就是用 Laura.Serialization 完成的 正反序列化;

>WinPC服务端 能够和 WinCE客户端 进行协同工作 —— 那么 WinPC服务端 和 WinPC客户端 也就理所当然 可以正常运行;所以 WinPC客户端 测试这里就 不予列出啦;

>Ps. 客户端 并非只支持 从中央服务器 配置获取,而且 还支持 自定义 配置获取;

 

集群容错:

Slithice 集群架构 支持 集群服务端 的 宕机容错;

还是 上面的 Demo —— 我们关闭 几个 集群服务端(模拟 服务器 宕机现象);

图片就不列举啦,结果是:

>WinCE 客户端 依然响应 正确值;

>但是 随机调度到错误服务端时,速度可能慢一点:

因为一次任务,有三次容错重连机会,即 实际 可能调度了 4、7、10、….. 次

>3次错误尝试 后 确定某个 服务端 确实错误;

>于是 更换 其他 服务端,1次成功尝试(如果更换的服务端 还错误,又会增加3次),并返回结果;

       >对错误服务端的 调度 不会 一直 慢下去(每确定错误一次,这个 错误服务端 的 调度概率 会被 降低);

              >集群 出现 服务端宕机,开始时,执行性能可能会慢一些;

>但是 随着 错误服务器 调度概率 越来越小,错误调度 也就会 不断减少,性能 也会 恢复;

 

 

 

                                                                   舒小龙

                                                              2014-01-29 10:29

posted on 2014-03-18 11:05  InkFx  阅读(970)  评论(2编辑  收藏  举报