观点

 

Corba:已逝但(希望)未被遗忘

没有魔法,过去的教训在今天仍然适用。

Terry Coatta

早在2006年6月的Queue期刊中,Michi Henning撰写了一篇非常好的关于CORBA的简史,并讨论了其一些技术限制如何导致了它的衰落。虽然这些限制无疑加速了CORBA的消亡,但一个非常普遍的观点是,最终原因是Web服务的兴起,这种观点又与进一步的信念相混淆,即Web服务在分布式计算领域的统治地位表明其技术优于之前的系统,如CORBA和DCOM。

在分布式系统领域工作多年——实际上可以追溯到构建分布式系统意味着需要用精心编写的C代码将位打包到UDP数据包的时代——我认为这种假设是没有根据的。更糟糕的是,这表明人们未能认识到之前这些系统中那些设计精良的方面。这是一种“银弹”思维的症状,这种思维将Web服务视为与过去的彻底决裂,最终将消除设计和构建分布式系统的复杂性。

Web服务真的与之前的系统有那么大的不同吗? 归因于Web服务的一个重要好处,实际上达到了成为其名称一部分的程度,是它专注于面向服务的架构(SOA)。这通常与被认为是基于CORBA的系统的决定性特征的细粒度分布式对象的风格形成对比。 诚然,CORBA在单个对象的级别上提供了分布式访问。 但是,应该指出的是,CORBA还支持递归定义的数据结构,这使得按值交换复杂数据结构变得简单。

事实上,在90年代中期,我曾参与一个团队,该团队设计并实现了一个基于CORBA的系统,该系统使用此功能交换软件管理信息。 我们设计了一个CORBA数据结构,表示一个节点树。 每个节点都有一个名称、一个值和一些其他属性。 它还包含许多子节点,每个子节点都具有相同的结构。 当然,叶节点不包含子节点。 使用结构体、联合体和数组在CORBA IDL中表示这种数据结构相对简单。 任何这样的节点树都可以通过CORBA方法调用轻松传递——运行时会将树序列化并批量传输给接收者。 此外,该树根本不包含对象引用,因此代表了纯粹基于值的的信息交换。 最后,人们可能会注意到,这棵树的结构和内容与XML文档的DOM表示形式非常相似。

我认为这表明,虽然CORBA当然可以支持细粒度的对象架构,但它绝不强迫人们采用这种风格。 诚然,实现细粒度架构的简易性可能对那些在构建分布式系统方面经验不足的开发人员具有诱惑力。 但并非细粒度对象完全没有价值。 如果您碰巧正在处理多处理器系统,其中带宽和延迟的考虑因素与跨互联网分布的应用程序的考虑因素截然不同,那么细粒度对象就具有一定的吸引力。

这就是问题的关键所在。 当我们构建该系统时,我们可以选择定义一堆对象接口并在它们之间传递引用。 但我们知道,管理信息通常会批量访问,并且零散地来回多次获取信息没有任何意义。 我们没有假设CORBA会以某种方式为我们解决问题,而是确保选择CORBA中那些提供我们所需行为的元素。 我们创建了一个“面向服务”的解决方案,因为这才是合理的。

使用Web服务并不能比使用CORBA更能保证构建一个好的分布式系统,就像使用CORBA并不能保证构建一个坏的分布式系统一样。 Web服务无法神奇地赋予系统设计有效处理延迟和带宽限制的能力。 它无法消除由部分故障以及对可能暂时无法访问的系统的依赖性所引起的困难。 幸运的是,人们多年来一直在设计和构建分布式系统,通常使用CORBA、DCOM及其前身等技术。 不要认为所有这些工作都被Web服务的魔力所取代,因为没有魔法,过去的教训在今天仍然适用。

acmqueue

最初发表于Queue杂志第5卷第4期
数字图书馆中评论这篇文章





更多相关文章

Martin Kleppmann, Alastair R. Beresford, Boerge Svingen - 在线事件处理
对于跨异构存储技术的分布式事务的支持要么不存在,要么在操作和性能特性方面表现不佳。 相比之下,OLEP越来越多地用于在这些设置中提供良好的性能和强大的​​一致性保证。 在数据系统中,日志通常用作内部实现细节。 OLEP方法有所不同:它使用事件日志而不是事务作为数据管理的主要应用程序编程模型。 传统数据库仍然使用,但它们的写入来自日志,而不是直接来自应用程序。 使用OLEP不仅仅是开发人员的实用主义,而是它提供了许多优势。


Andrew Leung, Andrew Spyker, Tim Bozarth - Titus:将容器引入 Netflix 云
我们相信我们的方法使 Netflix 能够快速采用容器并从中受益。 尽管细节可能特定于 Netflix,但通过与现有基础设施集成并与合适的早期采用者合作来提供低摩擦容器采用的方法,对于任何希望采用容器的组织来说,都可能是一种成功的策略。


Marius Eriksen - 大规模函数式
现代服务器软件在开发和操作方面要求很高:它必须始终在所有位置可用;它必须在几毫秒内回复用户请求;它必须快速响应容量需求;它必须处理大量数据和更多流量;它必须快速适应不断变化的产品需求;在许多情况下,它必须容纳一个大型工程组织,其众多工程师就像一个又大又乱的厨房里的厨师一样。


Caitie McCaffrey - 分布式系统的验证
以其在分布式系统方面的开创性工作而闻名的 Leslie Lamport 曾说过一句名言:“分布式系统是指即使你不知道存在的计算机发生故障也可能导致你自己的计算机无法使用的系统。” 鉴于这种黯淡的前景和大量可能的故障,你甚至如何开始验证和确认你构建的分布式系统正在做正确的事情?





© 版权所有。

© . All rights reserved.