项目原因:

参与过各种 分布式项目,有 Socket,Remoting,WCF,当然还有最常用的可以跨平台的 WebService。

分布式编码的时间浪费:

但是,无一例外的,开发分布式程序的开发遵循 如下规律:

>那就是 得先写服务端代码;

>然后 通过工具生成代理类;(特别浪费时间)

>客户端代码 调用代理类 完成业务;

这种编码规律,就有一个问题:

那就是 当我们调试程序时,得先以调试模式启动服务端,再以调试模式启动客户端——然后在调试中找到代码的BUG。 这种调试方式 调试一次 需要 5-10分钟(太浪费时间);

如果 服务端是 基于 WinService 的话,过程就更麻烦:你得先卸载已经安装的WinService,再安装新的WinService,然后 附加进程,再以调试模式启动客户端。这种调试方式 调试一次 需要 10-15分钟(更浪费时间)

于是,针对调试时间的浪费,就有了 一体式开发,分布式发布 的设计(直接右键 调试,就能找到 服务端,客户端 两者的 BUG,最终发布时,只要将编译的程序集 丢到 服务端的目录下,就能直接实现功能)——这种调试方式 调试一次 只需要 0.5-1分钟。

分布式通常解决的问题:

>分布式用于解决:让多台机器同时办事,三个臭皮匠,顶个诸葛亮——以实现运行速度的最快速;

>分布式的稳定:当分布式中,一台机器宕机,其他机器依然办事——不会因一台服务器的问题 而影响整个程序的稳定;

但是,如果有如下意外:

>写好的分布式程序,本来用的是 WinService 的 WCF 做服务端,但是最后客户 买不起服务器,只能买个空间——于是我们得将 WinService 改成 WebService,得费多少人力物力;

>分布式中,两台服务器 做同一个事情,调度均衡 也是一个问题:你得让 高配置的服务器多做事,配置低的服务器少做事;少出错的服务器多做事,多处错的服务器少做事——这种调度均衡 恐怕 非专业人士 还得费一番脑经吧;

于是,就想  能不能有一种设计:

>一体式开发 分布式发布 的节省编码时间;

>已经编译的程序集 可以轻易丢到 任何类型的 服务端宿主下,随意更换 Socket,Remoting,WCF,WebService;

>而且实现调度均衡,平衡利用服务器资源;

设计过程:

>本设计其实在 之前的文章  《『架构』2013需要完成的 架构》 中,有过记录;

>而实际编码 从 2013-02 开始,但是断断续续时间一直并不充分,没有更多业余时间;

>目前的过程,仅停留在 现行Demo阶段(2013-05月左右完成):实现主要功能,忽略所有细节;

相关手稿 和 设计图:

 

关于设计图:

>其中,我们看到 客户端>Slithice调度模块>服务端>Action插件调度类;

>于是,我们 基于 Slithice 的内核,只需要实现 插件 就行;

>调试的时候,我们 不用 走 如上的线路,我们只需要  客户端>Action插件调度类; 于是就能轻易实现 一体式开发;发布的时候,将编译程序集 丢到服务端目录,就能实现 分布式发布;

先行Demo 和 正在进行的整合版:

先行版 的 内核功能已经基本实现:实现核心功能,完成理想主义的运行;

整合版 却还在 编码过程中:实现细节,开始适应各种实际情况,且 还需要一个 集群配置器 的UI界面;

最后的简结:

>参与大大小小各种项目;公司的,学校的,个人的;已经五年了;

>当初觉得很难的技术,在今天看来 都不过如此;新的技术总在前方;

>各种项目,各种问题,各种思考,各种灵感 —— 有如泉涌的灵感 在这五年,总是接踵而至;

>五年了,没有自己实现不了的功能;没有自己学不会的技术;没有自己写不了的算法;没有自己攻克不了的技术攻关;

>但这些  功能,技术,算法,技术攻关 也是 无尽的;

>我以为 完成了  《『架构』2013需要完成的 架构》  中的事情,我可以 完美的 停下自己的业余时间编码;

>但是,编程作为一种兴趣,占据了自己太多的 业余下班时间;我现在很想将更多的业余时间 用到 其他方面;

>于是,本文的设计 并不是 之后编码的前奏,只是一个思想的备份;本文的设计 我可能 找不到时间 或者 不想 完成了;

>更多的,我想我更愿意花点时间 写几首情诗,打几个电话,看几本书,一切都慢慢来——放下自己有如着魔的编程;

『设计』Slithice 分布式架构设计-支持一体式开发,分布式发布的更多相关文章

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

    相关介绍文章: <『设计』Slithice 分布式架构设计-支持一体式开发,分布式发布> <『集群』001 Slithice 服务器集群 概述> <『集群』002 Sli ...

  2. Slithice 分布式架构设计

    项目原因: 参与过各种 分布式项目,有 Socket,Remoting,WCF,当然还有最常用的可以跨平台的 WebService. 分布式编码的时间浪费: 但是,无一例外的,开发分布式程序的开发遵循 ...

  3. 一个word合并项目的分布式架构设计

    一个word合并项目的分布式架构设计 项目背景与问题起源 我们要给一个客户做word生成报告以及报告合并的工作,要合并的报告非常多,而且每个报告也比较大,一个多的报告大概有200页以上.我们用c#操作 ...

  4. 大型分布式架构设计与实现-第一章SOA(面向服务的体系架构)

    拜读了大型分布式架构设计与实现,觉得该书作为入门不错,但内容过于简单,描述过于琐碎,小节之间连续性不强,不适合深入钻研学习.但为了更多的希望向架构师行业靠拢的工程师学习需要,本博客将对上书进行简化讲解 ...

  5. 从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则

    转载:http://space.itpub.net/17007506/viewspace-616852 腾讯QQGame游戏同时在线的玩家数量极其庞大,为了方便组织玩家组队游戏,腾讯设置了大量游戏室( ...

  6. 分布式架构设计(一) --- 面向服务的体系架构 SOA

    1.1 基于TCP协议的RPC 1.1.1 RPC名词解释 RPC的全称是Remote Process Call,即远程过程调用,RPC的实现包括客户端和服务端,即服务调用方和服务提供方.服务调用方发 ...

  7. 『TensorFlow』降噪自编码器设计

    背景简介 TensorFlow实现讲解 设计新思路: 1.使用类来记录整个网络: 使用_init_()属性来记录 网络超参数 & 网络框架 & 训练过程 使用一个隐式方法初始化网络参数 ...

  8. PetShop的系统架构设计

    <解剖PetShop>系列 一.PetShop的系统架构设计 http://www.cnblogs.com/wayfarer/archive/2007/03/23/375382.html ...

  9. petshop4.0 具体解释之中的一个(系统架构设计)

    前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有很多.Net与J2EE之争,很多数据是从微软的PetShop和Sun的PetStore而来.这样的争论不可避免带有浓厚的 ...

随机推荐

  1. Swing应用开发实战系列之四:组件内容实时刷新问题

    窗口组件动态刷新问题,在dotnet中根本不算什么问题,用几句代码很轻松就能搞定,但是在Swing中,实现动态刷新组件内容却是一件颇为吃力的事情.譬如针对我们经常用到的刷新JLable.JTextFi ...

  2. hibernate一对多映射实现

    Junit4方法详解 setUpBeforeClass()类初始化前调用 tearDownAfterClass()类初始化后调用 setUp()在测试方法前调用 tearDown()在测试方法后调用 ...

  3. JQ插件

    什么是插件 插件(plugin)是JQuery的扩展(Extension),以JQuery的核心代码为基础,是一种遵循一定规范的应用程序接口编写出来的程序. 插件的引入 引入jquery.js文件 引 ...

  4. 烂泥:KVM虚拟机windows系统增加硬盘

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前一篇文章介绍了有关linux系统添加硬盘的方法,这次我们来介绍有关windows系统添加的相关步骤. 其实linux和windows添加的硬盘的方法都 ...

  5. 百度地图简单使用——添加折线,圆形等(html,js)

    地图覆盖物概述 所有叠加或覆盖到地图的内容,我们统称为地图覆盖物.如标注.矢量图形元素(包括:折线和多边形和圆).信息窗口等.覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动. 地图A ...

  6. Heartbeat+LVS构建高可用负载均衡集群

    1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...

  7. 利用模板在RM里部署VM

    Refer to: https://www.azure.cn/documentation/articles/virtual-machines-windows-ps-template/ 过程中遇到的几个 ...

  8. Hive UDF 实验1

    项目中使用的hive版本低于0.11,无法使用hive在0.11中新加的开窗分析函数. 在项目中需要使用到row_number()函数的地方,有人写了udf来实现这个功能. new java proj ...

  9. 探索 OpenStack 之(10):深入镜像服务Glance

    本篇博文来探讨下镜像服务Glance. 0.  基本概念 0.1 基本功能 Glance提供REST API来支持以下镜像操作: 查询 注册 上传 获取 删除 访问权限管理 0.2 Glance RE ...

  10. openfire+asmack搭建的安卓即时通讯(二) 15.4.9

    上期没有放成果图呢!忘了=-=,这就是上次的成果图,textview里面会显示登陆的名字(这个是默认管理员帐号=-=) 好吧,登陆了服务器我们就有了交互的功能啦可以说是前进了一大步呢!下面能我们就要试 ...