分布式系统开发注意点

开发分布式软件系统时,要考虑许多因素。 如果您甚至不知道第一句话中我在说什么,那么让我为您提供一些见解,示例以及有关分布式系统的实例。

总览

分布式系统是指多个物理硬件设备与单独的离散用户交互并通过这些硬件设备协作以为这些离散的单独用户实现不同且相似的目标。 有时,这些设备使用服务器作为集线器以点对点模式工作,以了解彼此之间的连通性,而其他设备则通过单个或一组集中式服务器进行协作和协调,例如

类似于Extranet的系统,供方用户通过Web浏览器审阅文档,然后在其浏览器中单击工作流,最终将文档传真给另一组用户,这些用户应提供带有足够标签(即带有条形码)的服务。 这个循环使封闭的系统可以设计和开发分布式软件。 传真的接收者填写并做任何需要作为其纸本世界的一部分的事情(包括随着时间的流逝接收许多传真并将其全部发送回去,这是另一篇有关电子签名的博客文章的案例) 。 接收到的传真服务器在接收到入站原始文档后,会将接收到的传真图像“移交给”另一组用户(甚至是发起出站传真的同一用户)进行整理和处理,以在接收下对其进行检查和处理在他们的浏览器中再次进行工作流程。

在这里,您有许多系统在数据中心内协同工作以实现不同的目标。 您有一些用于用户界面的Web服务器。 用于工作流系统,分析和报告的某些数据持久性层。 您有用于管理传入/传出传真传输的传真服务器(我自己喜欢Dialogic Brooktrout传真板,我自己http://www.dialogic.com/Products/fax-boards-and-software/fax-boards.aspx )。 您具有入站和出站标签,标记,排序规则,扫描和对象字符识别组件(通常,根据设计,一些不同的服务器可能并不仅是一个单独的实例,而且取决于规模可能只有六个左右)。

所有这些组件下面的结构在所有这些组件之间都是一致的。 这始于OSI层,因为首先和大多数分布式系统是通过约束的物理层连接的,所以让我们从这里开始。

物理层约束

OSI层有7层或9层,具体取决于您与谁交谈。 在某些团队中,第8层和第9层分别是政治和宗教,因为必须考虑到围绕设计,开发,部署和维护这些系统的所有交互的社会结构,方法论和人类行为。 如果您不满意,那么您的应用程序层用户体验也可能会出错。 第1-7层(较常见的层,通常是更好理解的层)对计算机如何通过用户或计算机的接口以及通过另一计算机或另一用户的接口到另一台计算机的数据移动方式进行分类。 如果没有重构或在这些层中创建新软件,您将永远无法在基础层之外做任何事情。 因此,很高兴知道它们是如何工作的。 您可以在自己的软件程序编写工作中做到这一点(请,请相当高兴),以更好地平衡处理约束。

http://fab.cba.mit.edu/classes/MIT/961.04/people/neil/ip.pdf的图30-1映射了Internet协议套件的许多协议及其对应的OSI层。

软件在硬件设备中继续运行的位置

最重要的是本地机器硬件的操作系统及其实现。 我很难选择真正构成底层架构的许多或其他任何层或系统,具体取决于您的托管服务提供商,而该提供商最终还是一个供应商,所以这又是另一回事了……除非他们运行通过open编写的软件您已经完成了源项目工作,但我离题了…… Linux编程接口:Linux和UNIX系统编程手册是我喜欢Linux的资源。

怎么办?

在过去的九年中,由于廉价(有时便宜)的商品硬件已成为我们所预见的现实,因此许多经典计算机概念已变得更容易实现。 这使得并行和分布式计算平台,分布式文档和键/值存储库,分布式发布/订阅经纪人,发布者和消费者系统,甚至具有不可变结构的参与者模式也开始成为该结构的一部分。 这里的难题是这些市场领域的竞争和起步阶段,甚至还没有“ 跨越鸿沟 ”。

现在,说完所有这些……就显得很突出。 “ ZooKeeper提供了正确性和协调性的关键点,这些要点必须比所有希望将其本质上构建为自己的关键逻辑的系统都具有更高的交易保证。” 卡米尔·富尼耶(Camille Fournier)在我的一篇博客文章中让我看到了这一点, 网址为http://whilefalse.blogspot.com/2013/05/zookeeper-and-distributed-operating.html?spref=tw ,这是因为Zookeeper是如何与许多此类动物联系在一起的现有类型的系统。 由于这些系统尚未在市场上成熟(到目前为止,它已经在早期采用者中充分成熟了),因此它们之间和内部存在一些一致性,因此我们必须开始(从字面上)研究,支持和承诺。

现在,关于Zookeeper的另一个好处是,已经开发了一个开放源代码库,并且(在所有条件相同的情况下)不断维护该开放源代码库,使开发Zookeeper开发的可重复模式更加容易http://curator.incubator.apache.org/ 。 如果您从未使用过Zookeeper,建议您从http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html开始。

参考:来自JCG合作伙伴 Joe Stein的分布式系统开发注意事项 ,位于All Things Hadoop博客上。

翻译自: https://www.javacodegeeks.com/2013/06/distributed-system-development-considerations.html

分布式系统开发注意点

分布式系统开发注意点_分布式系统开发注意事项相关推荐

  1. 3d数学基础图形与游戏开发第二版_游戏开发完整学习路线,都在这里了

    在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的. 平台与编程语言选 ...

  2. python测试开发工程师前景_测试开发工程师,薪水20k值吗?

    近几年,招聘网站上的趋势:不管面试初级测试还是中高级测试,工作职责中基本上都会出现熟练一种开发语言,Java,Python等,会搭框架,招聘方向不是自动化就是测试开发,越来越多的人追崇测试开发,那你了 ...

  3. 产品迭代开发 迭代发布_迭代开发用例

    产品迭代开发 迭代发布 我所阅读的有关用例的几乎所有内容都集中于描述需要添加到产品中的内容. 敏捷开发说"首先使它工作,然后使其更好." 这意味着改变软件使用户能够执行他们已经可以 ...

  4. 分布式系统开发注意点_分布式系统注意事项

    分布式系统开发注意点 by Shubheksha 通过Shubheksha 分布式计算概述:分布式系统如何工作 (Distributed Computing in a nutshell: How di ...

  5. 前端和后端开发人员比例_前端开发人员vs后端开发人员–实践中的定义和含义

    前端和后端开发人员比例 Websites and applications are complex! Buttons and images are just the tip of the iceber ...

  6. 如何 给给软件开发 添加 代理_敏捷开发是如何被跑偏的

    今天聊聊敏捷软件过程. 先说结论:据我观察,至少有60%的团队误用了敏捷软件过程,或者说至少60%的团队在进行伪敏捷开发. 与大家通常的认知是相反的,敏捷过程并不是一个非常容易实践或者实施的过程规范. ...

  7. uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言

    分享本文,介绍下更接近硬件底层的C语言与汇编,解释 CPU 如何执行代码. 高级语言与低级语言 学习编程其实就是学习与计算机交流的语言.因为计算机不理解人类语言,通过编译器把人类写的代码转成二进制代码 ...

  8. 面向对象方法的优势简化软件开发的过程_软件开发技巧的途径

    软件开发的复杂性每天都在增加.几乎每年都会发布一个新的框架(例如AngularJS,ReactJS)和一个新的构建工具(例如Webpack,Rollup).甚至每年都会发布新的JavaScript版本 ...

  9. 软件开发报价模板_定制开发小程序和行业通用(模板)小程序的利弊分析

    最近很多掌客多客户来咨询,纠结到底是定制开发小程序还是买个模板通用小程序好,其实在回答这个问题之前,我们先要搞明白什么是定制开发小程序,什么是模板通用小程序,最后再问问自己的搞小程序的目的是什么? 所 ...

最新文章

  1. 详解操作主机角色,Active Directory系列之九
  2. leetcode345——Reverse Vowels of a String(C++)
  3. 深度学习(神经网络)[1]——单层感知器
  4. 源码之ListView分析
  5. annotation - SuppressWarning
  6. 用ProGet搭建本地私有NuGet仓库
  7. .netframework3.5 中TimeZoneInfo 类的使用
  8. Android TextView setGravity不起作用
  9. opencv+Java+android 灰度图像
  10. 【kafka】kafka 查看 GroupCoordinator
  11. 51单片机4位数乘法C语言,51单片机实现4位数以内的加减法
  12. opencv-api imread imwrie
  13. php发送邮件pop3,php 发送邮件与pop3邮件登录代码
  14. 基于Springboot+MYSQL实现在线点餐系统源码
  15. 用Labelmx条码生成器批量打印条形码
  16. 友善串口工具 电子秤_Serial Port Utility
  17. 高等数学:数列前后项【递推式的单调性】与【整个数列单调性】的关系
  18. php writeup,PHP_encrypt_1(ISCCCTF) Writeup
  19. bm算法好后缀 java实现_BM算法 | Depeng's Blog
  20. 什么是实人认证?需要用到哪些api接口

热门文章

  1. 最新 Spring 系列教程,都在这了
  2. Java命令学习系列(一)——Jps
  3. Maven精选系列--过滤不同环境配置文件
  4. Junit5新功能一览
  5. nginx部署laravel需要修改的配置
  6. python股票自动买卖视频教程_十分钟学会用Python交易股票
  7. 制作FAT12软盘以查看软盘的根目录条目+文件属性+文件内容
  8. Angular 应用解决跨域访问的问题
  9. java 用流创建流_成为Java流大师–第1部分:创建流
  10. drools 执行函数_Drools可执行模型还活着