欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年的分布式开发系统-理论篇 .pdf

    • 资源ID:32204748       资源大小:69.05KB        全文页数:9页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年的分布式开发系统-理论篇 .pdf

    理论篇 : 面向对象的分布式开发系统- 理论篇(2)疯狂代码 http:/CrazyC ?:http:/CrazyC 3. 布式系统关键技术 3.1 面向对象技术 Object-Oriented 客户 / 服务器模式是典型分布式计算模型在此模式下客户端建立连接到服务器通过相互约定协议通讯以达到交换信息目 SoftEngine 核心通讯通道封装了这些复杂底层细节通过多层封装技术将底层对象和应用对象完全隔离SoftEngine 只在组件区域为应用提供了些抽象类作为软总线 接口如下图所示 : alt=/ 图表 2 Abstract is the erface of Soft-Bus. Application Objects : 应用对象 Objects: 系统对象 Infrastructure Objects: 底层对象 Abstract Class: 抽象类 设计个可重用面向对象软件Software 不是简单事个分布式重用系统更是困难事在SoftEngine 基础的上却很容做到其本身体系结构是对象化设计也是可重用 在组件区域内开发人员只需关注应用业务继承接口抽象类实现所定义业务流程通过发布例子化应用对象构造应用系统这种面向对象开发模式对员来讲是非常简单非常有效也可从繁重体力劳动( 编码) 中解脱出来更多精力用于设计工作 组件区域中应用对象是可被重用按照定发布方式可以在区别SoftEngine 系统中再次利用可被重用性不再取决于编码质量而在于如何设计出好应用业务逻辑流程有关这点我们将在后续流水线式设计模式中讨论 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 3.2 任务驱动 Task-Driven 在 SoftEngine 内部采用是任务驱动在这里所提到任务驱动概念不完全相同于些专业任务驱动论文更接近事件驱动 (Event-Driven) 也就是说所有对象在没有任务时处于空闲状态;直到有任务( 事件) 到达对象运行模式才会转变为激活状态 在区别对象间传递任务是合作(collaborate) 唯方式合作模式有两种 : 完全独立模式 (Individual) 松散耦合模式 (Loosely Coupled) 下面图示了其中区别: width=358 alt=/ 图表 3 Individual and loosely coupled collaboration 对象 A 和对象 B 有次序地处理同个任务对象B 必须等待对象 A 处理结果对象 A 和对象 B 合作关系称为 : 松散藕合模式 对象 B 和对象 C 分别处理区别任务这种关系称为: 完全独立模式也就是说对象C 需要任务不总是来自于对象B 它们的间没有必要关联 在完全独立模式对象C 由于功能相对独立无须等待想关数据所以效率比较高具有很高实时性但存在功能相对集中适应性比较差被可重用可能性也相对减少不足松散耦合模式为完成任务将处理步骤/ 功能细分为区别对象使对象 A 和B 功能相对专适应性增强可重用性也增加了同时更据区别功能效率可以方便作负载均衡(Loadbalancing) 调整但是任务多次投递以及相对耦合关系也降低了局部处理性能就如下图所显示两者性能比较: width=316 alt=/ 图表 4 Performance of collaboration 在实际应用开发中如果选择完全独立模式 或 松散耦合模式取决于在设计阶段如何定义应用业务流程这将在名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 后续章节 : 流水线式设计模式中再次阐述 每个被传送中任务都具有自己生存周期(Live cycle)从产生到被丢弃如下图生存周期图: width=161 alt=/ 图表 5 Live-cycle of task Created : 被产生 Forward: 正向传送 Backward: 回送 Pending: 悬挂 Timeout: 超时 Operating:处理 Droped:被丢弃 个任务由某个功能对象产生并传送(forward)到下个目对象在那里将被处理的后这个任务会被丢弃或被返回(backward) 到源对象这是个常规任务生存周期但如果在任务传递途中发生如目标对象不可到达等阻碍该任务将会被悬挂 (pending) 直到继续传送或超时 (timeout)被丢弃任务在传递中安全问题将会在后续数据安全主题中讨论 3.3 分布式对象 Distributed Object 在上文提到 SoftEngine 由区别种类对象构造在发布实施角度上看可分为 3 种: 本地(Local) 对象远地 (Remote) 对象虚拟 (Virtual) 对象 width=392 alt=/ 图表 6 Local, Remote and Virtual Object 在上图中 : 本地对象 Local Object : 指分布在同个 SoftEngine 独体系统中对象互称为本地对象如: 在系统 I 中对象 A 和B 互为本地对象 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 远地对象 Remote Object : 指分布在区别 SoftEngine 系统中对象 ( 同个群体系统 ) 如: 对象A 和C 以及B 和C 互为远地对象对于系统 II 中C 系统I 中A 和B 属于远地对象 虚拟对象 Virtual Object : 区别于本地和远地对象虚拟对象不属于真实对象而是个虚设类型真正操作不在虚拟对象本身只是远地对象在本地映射如: 虚拟对象 A是A 在系统 II 中映射对象 C 向A发送任务会转送到远地对象A而C 不知道也没有必要知道同理如果对象B 需要发送任务到 C 在系统 I 中可定义 C 虚拟对象 本地和远地对象是相互关系而虚拟对象只是种映射用于关联本地和远地对象起到分布和 负载均衡作用 3 者的间关系在开发中无须关心只有在系统部署中通过配置发布环境来确 定或改变以下图为例介绍负载均衡: width=410 alt=/ 图表 7 A load balance system 在个分布系统中有两个独立运行系 统 I 和II 其中有相同对象 A1, A2, A3, A4 被分别发布他们所被加载类是相同只是被定义发布名称区别如果再定义个虚拟对象A 同时映射到 A1 - A4 同时配置区别策略如负载均衡循环法(Round-Robin) 或冗余法 (Hi-Available)发送到 A 任务会按照区别策略分发到A1-A4 上 在应用对象开发测试完成后部署策略包括: 系统配置、对象配置、对象发布等信息被定义在每个独体系统配置文件中通过这些配置文件将会动态地构建出个分布网状系统可以完成特定应用功能所以如此构成分布式系统具备以下体点 : 整个分布式系统由各种对象以动态组件方式构造 对象可以存在于任何网络(LAN/WAN) 任何主机 通过配置对象可以动态地加载/ 卸载整个分布系统始终处于动态调整状态 虚拟对象让本地对象忽视真实远地对象物理位置 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 开发和分布过程完全分离在对象开发过程中无需过多考虑系统级问题 width=413 alt=/ 图表 8 A distributed system 3.4 数据安全 Data-Safety 应用系统所需数据信息在以任务方式送入SoftEngine 系统内部后任务将会被高效地传输 在每个独体系统内部或群体系统网络中因此如何保证任务安全到达是个关键问 题在SoftEngine 里解决这个问题技术称为: 数据安全其中包括 4 个部分 : 安全任务池 Safety Task Pool 任务悬挂 Pending 降速传递 Slowdown 流量控制 Flow control 以下图为例描述 : width=327 alt=/ 图表 9 Data-Safety Forward Task: 发送任务 Backward Task: 回送任务 Undeliverable Task: 无法发送任务 Panding Task: 悬挂任务 Task Channel: 任务通道 Pending Pool: 悬挂缓冲池 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - 安全任务池 Safety Task Pool 在SoftEngine 内核大部份对象都有自己任务池和任务通道连接类似于文件系统内存缓冲任务池对于提高系统性能有非常重要作用同时为了保证数据安全不丢失任务池需要良好设计包括: 过载保护 (overload protection) 硬盘缓冲等安全机制确保无论对象运行状态如何任务都不会丢失也就是说当个任务被成功地送入目对象任务池这意味着 : 任务是安全所以任务池保证了静态任务安全性 任务悬挂 Pending 在些特殊情况下任务无法立即发送到目对象( 如上图对象 A 发送任务到对象 C ) 无法发送任务将会被悬挂在个特殊任务池中 - 悬挂缓冲池通过悬挂缓冲池SoftEngine 系统会记住有那些任务那些目对象而被悬挂等待目对象恢复后重发或则任务超过了规定生存周期被丢弃 降速传递 Slowdown 在常规状态下对象 A 会以最快速度向对象 B 发送任务但如果此时对象B 处于无效状态或任务量过载那么第个无法发送任务将会被悬挂同时发送源对象发送速度也会被系统自动控制减缓发送频率称的为: 降速传递 降速传递机制可以在巨大任务流中有效地保护系统失去控制尤其当某个任务流中对象发生了意外举个例子: 对象 A,B,C 合作完成项任务对象 A 会产生大量任务经过对象B 发送到 C 如下图 : width=218 alt=/ 图表 10 _disibledevent= 第 2 步: 从磁盘中读取历史信息耗时20ms 第 3 步: 从内存中读取配置信息耗时5ms 第 4 步: 结果计算并返回结果耗时10ms 见下图 : width=401 alt=/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 图表 11 Non-pipelining mode 整个流程处理时间需要135ms 请求返回时间也是 135ms 不难看出第步虽然耗时最多但属于工作流关键步骤后续步骤也不等待其运行结果而且在这个工作流中每步操作都需要等待上步操作( 在同时刻只能有个步骤在工作) 所以135ms 不是最优化结果 通过流水线式设计模式可以进步优化首先将这个任务划分为 3 个小任务分别由 4 个对象处理所以设计了 5 个对象 : 对象 A : 划分大任务为 3 个小任务同时分发作为任务开始 对象 B : 保存数据到磁盘耗时 100ms 对象 C : 从磁盘中读取历史信息耗时20ms 对象 D : 从内存中读取配置信息耗时5ms 对象 E : 等待任务 2 和3 结果计算后返回耗时 10ms 见下图 : width=397 alt=/ 图表 12 Pipelining mode 虽然每个步骤单位处理时间并没有减少但对象B 费时操作被安排在主要流程的外所以没有影响整个处理时间对象 C 和D 处理被安排在同时刻发生对象E 等待C 和D 结果所以只要工作流程为: (A) - (C, D) - (E) 步考虑任务传递时间耦合时间及A 分发时间总响应时间为 : max( C, D ) + E = max( 20, 5 ) + 10 = 30ms 所以流水线式设计模式优势显而易见同时也改进了以往开发流程 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 4. 分布式系统对开发流程改进 以上介绍了分布式开发系统关键概念及技术利用这些技术不但可以提高系统性能也可以 改进以往开发环境和步骤开发步骤包括以下5 步: 设计 Design: 改变以往从头设计做法主要精力集中在应用业务流程、工作流程、任务流程设计不断优化流程是应用系统成功和否关键 定义 Define: 流程确定的后就可以从中定义出各种功能对象服务对象任务对象并加以描述此过程需要将定义对象放入确定流程中模拟其使用性、有效性等 实现 Realization:开始实现定义好各种对象并进行单元白盒测试保证每个对象自身稳定在实现过程中会发现和定义中相矛盾地方此时需要和设计人员探讨修改 部署 Deployment: 实现了每个对象的后就可以对系统按照设计流程进行部署整个过程都是通过配置文件进行系统调整所以只要对象具有较强独立性并且保证每个对象已达到最小化就可以保证在联合测试中不会有过多修改工作但部署中会根据实际境况对原先流程进行调整以达到最佳效果 运 行 Running: 开发最后步就是进入运行状态 width=446 alt=/ 图表 13 Development process 和传统开发流程相比每个阶段划分都更明确这样有利于区别角色划分和分工尤其在部署阶段原始设计人员可以使用编码完成组件对象直接介入系统构建中另外个优势在于: 整个开发周期变短由于无需从头设计按照定模式定义对象统结构化这些都是传统软件Software 开发所无法比拟尤其充分白盒测试使联合测试成功率提高时间节省了许多 5. 小结 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 本文以 SoftEngine 为例简洁地介绍了以面向对象方式解决分布式或传统应用系统开发所需关键技术希望能为非Web 应用开发平台提供些好体系结构改善我们开发环境 12下页 2009-2-12 5:02:21 疯狂代码 http:/CrazyC 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -

    注意事项

    本文(2022年的分布式开发系统-理论篇 .pdf)为本站会员(H****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开