『集群』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
『集群』004 Slithice 集群分布式(多个客户端,基于中央服务器的集群服务)的更多相关文章
- 『集群』003 Slithice 最简分布式(多个客户端,一个独立服务端)
Slithice 最简分布式(多个客户端,一个独立服务端) 案例Demo 展示: 我们搭建一个 可以 独立运行 的 服务端:然后 多个客户端 并发链接 这个 服务端 完成 分布式逻辑: 服务器 独立运 ...
- 『集群』005 Slithice 基于 集群 的 自动容错
Slithice 基于 集群 的 自动容错 Slithice容错概述: Slithice 支持 非集群 的 独立服务端: 支持 基于 中央服务器 的 集群服务端: 支持 基于 自定义配置 的 集群服务 ...
- 『集群』001 Slithice 服务器集群 概述
Slithice 服务器集群 概述 Slithice是做什么的 Slithice 是一个 跨平台 的 分布式架构 框架: 旨在简化 分布式开发 的开发难度,节省 开发成本 和 后期维护成本: 并提供 ...
- 『集群』002 Slithice 集群配置工具 的使用
Slithice 集群配置工具 的使用 Slithice集群配置工具 主界面 在测试 Slithice 的 Demo 中,我配置了 7个服务端: 一个 WCF 的 中央服务端: 两个 WCF 的 成员 ...
- 『集群』006 Slithice 后期改进 和 Slithice可能存在的BUG
Slithice 后期改进 和 Slithice可能存在的BUG Slithice 可能存在的 BUG: >Slithice 暂时 没有 对 循环调度 进行控制:不正确的 配置 可能导致 调度死 ...
- 『练手』004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件
004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件 导航栏 插件扩展 比如下图的 窗口 > 关闭所有文档 这个导航栏: 在 任何程序集,任何命名空间,任 ...
- 『SharePoint 2010』Sharepoint 2010 Form 身份认证的实现(基于AD)
一.进管理中心,创建一个应用程序,配置如下: 二.填端口号,和选择form身份认证,以及填写成员和角色,其他都默认就可以了 三.使用SharePoint 2010 Management Shell在里 ...
- 『SharePoint 2010』Sharepoint 2010 Form 身份认证的实现(基于SQL)
1:创建一个基于身份认证的应用程序(具体参见上篇基于AD) SQL-MembershipProvider 成员SQL-RoleManager 角色 2:修改管理中心,我们创建的应用程序,还有Web服务 ...
- Tomcat:基于Apache+Tomcat的集群搭建
根据Tomcat的官方文档说明可以知道,使用Tomcat配置集群需要与其它Web Server配合使用才可以完成,典型的有Apache和IIS. 这里就使用Apache+Tomcat方式来完成基于To ...
随机推荐
- options.go
, SnappyEnabled: true, TLSMinVersion: tls.VersionTLS10, Logger: log.New(os.S ...
- python九九
学了有一段时间了,才发现自己连九九乘法表都写不出,好好笑,哈哈. 代码实现: for i in range(1,10): for j in range(1,i+1): print('%dx%d=%-2 ...
- CSRF攻击【转载】
CSRF(cross-site request forgery )跨站请求伪造,攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,通 ...
- python五种调试或排错的方法
1.print,直接打印,比较简单而且粗暴 在代码中直接输入print+需要输出的结果,根据打印的内容判断即可 2.assert断言,很方便,测试人员常常在写自动化用例的时候用的比较多 如 ...
- 执行Python程序的两种方式
目录 交互式(了解) 命令行式(了解) Python执行程序的三个阶段(掌握) 交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口 ...
- Spring Boot 2.0 图文教程 | 集成邮件发送功能
文章首发自个人微信公众号: 小哈学Java 个人网站: https://www.exception.site/springboot/spring-boots-send-mail 大家好,后续会间断地奉 ...
- Vue2.0源码阅读笔记(三):计算属性
计算属性是基于响应式依赖进行缓存的,只有在相关响应式依赖发生改变时才会重新求值,这种缓存机制在求值消耗比较大的情况下能够显著提高性能. 一.计算属性初始化 Vue 在做数据初始化时,通过 in ...
- 【Java】几道常见的秋招面试题
前言 只有光头才能变强 Redis目前还在看,今天来分享一下我在秋招看过(遇到)的一些面试题(相对比较常见的) 0.final关键字 简要说一下final关键字,final可以用来修饰什么? 这题我是 ...
- c#中@标志的作用
参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/tokens/verbatim ...
- .net之设计模式
在上一篇文章里我通过具体场景总结了“.net面向对象的设计原则”,其中也多次提到一些设计模式方面的技术,可想而知,设计模式在我们的开发过程中也是必不可少的.今天我们就来简单交流下设计模式.对于设计模式 ...