开发分布式软件系统时,要考虑许多因素。 如果您甚至不知道第一句话中我在说什么,那么让我为您提供一些见解,示例以及有关分布式系统的实例。
总览
分布式系统是指多个物理硬件设备与单独的离散用户交互并通过这些硬件设备协作以为这些离散的单独用户实现不同且相似的目标。 有时,这些设备使用服务器作为集线器以点对点模式工作,以了解彼此之间的连通性,而其他设备则通过单个或一组集中式服务器进行协作和协调,例如
类似于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开始。
翻译自: https://www.javacodegeeks.com/2013/06/distributed-system-development-considerations.html