• 【分布开发】分布式设计的5个原则


    原则1:保守分布 

        这项原则基于一个事实:调用不同进程上对象的方法要比调用进程内对象的方法慢数百倍;将对象移动到网络中的另一台计算机上,这种方法调用又会慢数十倍。

        拿数据层举例,在决定使用数据库时,一般需要决定分布数据源逻辑。然而,决定分布表示逻辑会更复杂一些。首先,除非所有应用用户都使用公共的终端,否则表示层的某些部分就必须颁布到每个用户机上。但问题是分布到什么程度。当然,近来的趋势是在服务器上执行大部分逻辑,而将简单的HTML发送到客户端WEB浏览器。实际上,这正是遵守了保守分布的原则。然而,它也需要每个用户交互都遍历服务器,从而这些用户交互才能产生正确的响应。

        在WEB迅速发展之前,普遍的情况是在每个客户机上执行整个表示逻辑,这样可以与用户更快地交互,因为它最小化了服务器上的遍历,但它也需要更新用户接口并被部署到整个用户群。最后,选择使用哪一个客户机基本上与分布设计原则无关,但都与期望的用户经验和部署问题有关。

        数据逻辑几乎总是在一个独立的计算机上执行,表示层通常也是如此。现在只剩下业务逻辑,它是整个问题组中最复杂的部分。业务层有时被部署到每个用户,而其他时候则被保存到服务器上。在许多情况下,业务层被分解两个或更多个组件,与用户接口交互相关的组件被部署到客户机处,而与数据访问相关的组件则被保存到服务器上。这就遵守了本地化相关内容的原则。

        可以看到,您有许多分布选项。分布的时间、原因以及如何分布等受到很多因素的影响,其中的许多因素又互相竞争。

    原则2:本地化相关内容

        如果决定或被迫分布全部或部分业务逻辑层,那么应当保证经常交互的组件被放置在一起。换句话说,您应当本地化相关内容。

        举例:
        在做电子商务中的购物车时,客户组件、商品组件、购物车组件之间就需要多次交互。每一次交互都会带来跨网络方法调用的系统开销。因此,这种跨网络的行为会抵消掉并行处理带来的好处。再考虑到几千用户会同时使用,可想其后果是破坏性的。

        应用示例:
        可以将应用程序驻留到多台WEB服务器,进口处由负载平衡器来分配,出口都进数据库。该设置称为WEB场。

        
    原则3:使用Chunky接口,而不是chatty接口

         Chunky是粗粒度,chatty是细粒度。
     
        粗粒度指方法中传的值用属性表示,细粒度指传的值用对象表示。

        在细粒度接口中,被传的方法对象,如果位于客户机进程中,则这个示例不会产生任何问题。可是 ,设想一下每个属性和方法调用跨越大西洋进行遍历,这将会产生严重的性能问题。

    原则4:优先选用无状态对象,而不是有状态对象

        无状态对象是能够在方法调用之间被安全创建和销毁的对象.如果应用程序选择销毁它,这个动作也不会影响到其他用户.这个特性不是轻易就能实现的,您必须对类进行特殊实现,这样类才不会依赖于公共方法调用之后实例字段是否继续存在.因为对实例字段没有依赖关系,所以无状态对象倾向于使用chunky接口.

        通过使用智能缓存、会话管理和负载均衡的方法,可以避免或者最小化使用有状态对象所带来的问题。这就是使用无状态对象的原因,但不是必须使用。这里需要再次说明,这个原则只能应用于为在其他机器中执行的代码所提供的对象。

    原则5:接口编程,而不是具体实现的编程 
        
        减少频繁的且时常出问题的部署。

       

  • 相关阅读:
    【原创】深入理解c++的右值引用
    【原创】c++拷贝初始化和直接初始化的底层区别
    【原创】Github团队协作之Pull请求
    【原创】基于多线程的银行家算法设计
    【原创】Git删除暂存区或版本库中的文件
    【笔记】程序员的思维修炼3
    【笔记】德雷福斯模型
    【原创】GC/垃圾回收简介
    数据库——JavaWEB数据库连接
    多线程
  • 原文地址:https://www.cnblogs.com/a311300/p/1230296.html
Copyright © 2020-2023  润新知