首页 > 学院 > 开发设计 > 正文

『开源』Slithice 2013 服务器集群 设计和源码

2019-11-17 03:17:12
字体:
来源:转载
供稿:网友

『开源』Slithice 2013 服务器集群 设计和源码

相关介绍文章:

『设计』Slithice 分布式架构设计-支持一体式开发,分布式发布》

『集群』001 Slithice 服务器集群 概述》

『集群』002 Slithice 集群配置工具 的使用》

『集群』003 Slithice 最简分布式(多个客户端,一个独立服务端)》

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

『集群』005 Slithice 基于 集群 的 自动容错》

『集群』006 Slithice 后期改进 和 Slithice可能存在的BUG》

『集群』007 如何测试Slithice源代码》

版本库:

Slithice是做什么的

Slithice是一个 跨平台 的 分布式架构 框架;

旨在简化 分布式开发 的开发难度,节省 开发成本 和 后期维护成本;

并提供 稳定 的分布式容错机制;

其 界面化的集群配置,一体式开发&分布式发布,插件覆盖,容错调度 是Slithice最大的亮点;

Slithice提供 任意 程序集,任意命名空间,任意类名 的 扩展,包括:

配置数据获取方式的扩展(从 什么地方 找寻 服务器配置数据);

调度方式的扩展(比如WCF,Socket,WebService等);

功能插件的扩展(这个就是 最重要的了);

Ps. Slithice并非 只 针对 集群服务器,同时Slithice也支持 最简单的 一个服务端&多个客户端 的 最简分布式;

Slithice名字的由来

Slithice是DotA故事中,娜迦海妖 的名字 —— 只是因为 半年前 练习 小娜迦,所以 才 选取了这个名字;

Slithice的版本演化

之前时间,Slithice的 架构设想 闪现于脑海,于是 整理了最简单的 设计手稿 和 实现目标

2013-02-10PRoject版本库正式动工 取名Slithice 2013累计耗时20小时,完成 先行版Demo;

2013-06-10Laura版本库 项目迁移 维持原名累计耗时60小时,完成 现在版本;

Slithice的目标

Slithice的 基本目标 就是 简化 集群分布式 开发;

Slithice的 终极目标 就是 跨平台:

服务端 可以用.Net、java等开发;

客户端 可以用.Net-PC、.Net-WinCE、.Net-WinPhone、Java、Android、iphone等开发;

—— 想必,这是 极好的;

顺带提一下Slithice的序列化

Slithice支持.Net自带的序列化(不能跨WinCE等平台) 和Laura.Serialization序列化 —— 没有使用架构;

Laura.Serialization是 作者顺手 累计30小时 完成的 一个 序列化算法;

Laura.Serialization支持.Net-PC、.Net-WinCE两个平台;

Laura.Serialization序列化的byte[]结构分为:类型区,数据区,结构区

Laura.Serialization设计思想,只要对 类型区 进行控制:基本就能实现 跨Java,Android等 其他平台;

Laura.Serialization作者顺手5小时,写了一个Json序列化算法(用 字符串 跨平台 显得容易很多)

Slithice集群配置工具 主界面

在测试Slithice的Demo中,我配置了7个服务端:

一个WCF的 中央服务端;

两个WCF的 成员服务端(私有–前面有一个棕色皮包的图标);

两个Socket的 成员服务端;

两个WebService的 成员服务端;

Slithice集群配置工具 配置界面

配置界面.jpg

我们看到的是WebService_002的 配置

>蓝色区域 里面的 是 当前服务端 自己可以处理的Action;

>红色区域 里面的 是 当前服务端 自己不能处理,但是 可以 调度出去的Action;

>紫色区域 里面的 是 当前服务器 可以调度 的 子服务器(就是 两个WCF服务);

>按照Slithice的设计思想:能够自己处理的任务,除了强制指定任务的服务器外,基本都会自己处理,自己处理不了的,才会进行调度;

上面 展示的 是WebService_002可以调度 出去的Action;

>TestAction_001、TestAction_002两个 子服务器 都可以 调度;

>TestAction_1_001、TestAction_1_002只有ConsoleWCFService_001可以调度;

>这里,做了一个BUG配置:我们将Slithice_ResetService(重置服务器) 的功能 没有 勾选为自己处理,结果 重置服务器 的功能 也将会 被调度;(Slithice内置的Action插件 并没有 特权)

>调度几率:在配置 服务端 时候,可以按照 服务端 所在的 硬件设备 的处理能力 设置 这个值,默认100000;当 对一个 服务端的 调度 出现错误时,该值 会-1,调度成功时,该值 会+1—— 调度几率,决定了 同一个任务可以多个调度 时的 调度几率;

Slithice集群配置工具 插件覆盖界面

上面 展示的 是 插件覆盖界面;

>ConsoleCenterService 具有 几个 自定义Action;

>其中,TestAction_Center_001 有两个版本, 他们是 同键值的,但是 最终被启用 的是优先级 更高的 100010;

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表