HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

论 SOA 中仲裁的价值

  • 2007-05-29
  • 本文字数:1464 字

    阅读完需:约 5 分钟

Nick Malik 的文章“仲裁在SOA 中的价值”引发了一起有趣的讨论。在关于这个主题的第一篇博客帖子中,他问道:“如果消息不能被仲裁,那它还是面向服务的吗? ”。

Malik 认为仲裁能力是任何 SOA 的关键益处之一,“能够拦截从 A 点到 B 点去的消息,并对那条消息做出反应而不通知那个管道的任意一方”。以他的观点,仲裁以技术中立的方式共同工作,它要求“我可以用一套完全不同的技术系统替换系统 A,并且只要消息是一致的就不影响系统 B”。

按照 Nick Malik 所说,“SOA 是用于企业应用集成的架构”。仲裁通过它的替换原则支持集成。通过比较架构性的仲裁和面向对象设计中的工厂模式,Malik 解释了这一观点,并引用了 Liskov 替换原则

能够增加仲裁,为我带来了一些相当特别的便利。就像在 OO 设计中,工厂给与我 Liskov 替换原则的便利,在消息传递设计中,仲裁为我带来了替换的便利。仲裁能够观察到从一个贸易伙伴传递到另一个贸易伙伴的消息,并基于消息的内容采取行动(假设我已经正确地获取了它)。

Udi Dahan 不同意 Malik 的 EAI 话语,以及他关于通过仲裁编排服务的想法:

尽管我非常同意 Nick 所说的 OO 仲裁依赖注入变种的观点,以及在消息传递方面扩大那些相同的概念是正确的做法,我还是对仲裁领域中的编排有疑问。这些“战术变化”需要在顶层(即业务级服务策略)的上下文中完成。这意味着所有逻辑应归入一个服务。服务间的“网络”只是一个“哑”网络,没有任何业务逻辑,只剩下技术能力,如知道将消息路由到哪个物理服务器去。

JohnCJ Malik 博客帖子的评论中表达了对于仲裁价值的看法,认为仲裁不应该被视为面向服务的通用需求。他认为:

  1. “要求仲裁会鼓励消息携带更多的上下文信息”。
  2. “除了请求 - 响应和发布 - 订阅,仲裁使消息交换模式极大地复杂化了”。
  3. “仲裁要求仲裁系统对于它所拦截的消息的语义至少有些理解”。

再论仲裁的价值中,Nick Malik 就这些观点一一做出了回应。他指出上下文的信息并不会使消息膨胀,而是“为了表示我们在企业EAI 场景中所传递的中立规范的业务文档,从而必须增加单条消息大小的这个做法,只是取得业务敏捷性的小小代价”。关于第二个争论,Malik 给出了一个非常好的类比:Joe 是银行职员,他拿着他的休假申请表去找他的老板并等待批准。他的老板只是这个申请到达最终接收人那儿整个过程中的众多仲裁者之一。Joe 并不知道也不关心这些仲裁中的任何一个。他只关心结果——他的申请是否被批准。批准过程可以在任一步被修改而不改变这一过程的业务语义。因此,Malik 认为“几乎所有有价值的长运行事务都必须能够仲裁,这是为了让它们可以被组合、被再组合,以及被编排”。最后,他认为共享消息的语义需要依赖仲裁功能。在任何情况下,他都把那个点声明为“风险,而不是成本。它是在任何项目中都会出现的风险。在定义良好的SOA 基础设施中,这个风险比起我们试图通过在3 个计算机系统中输入数据来组合一个手工业务过程要低得多”。

Nick Malik 总结说:在他的观点中,仲裁并不是所有服务都必须的,但是“它是被设计交付可组合性(即业务敏捷性)的面向服务架构所必需的”。

查看英文原文 On Intermediation in SOA 。 - - - - - -

译者简介:胡键,自 2000 年西安交通大学硕士毕业后一直从事软件开发。2002 年开始使用 Java,在项目开发中经常采用 OpenSource 工具,如 Ant、Maven、Hibernate、Struts 等,目前正在研究信息集成方面的规范和技术。可以通过 jianhgreat AT hotmail.com 与他联系,或访问博客: http://foxgem.javaeye.com/ 。与 InfoQ 中文站分享内容,请邮件至 china-editorial@infoq.com

2007-05-29 00:44834
用户头像

发布了 255 篇内容, 共 56.9 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

身为程序员,你很有必要了解一下提效工具“JNPF”

互联网工科生

程序员 软件开发 低代码 JNPF

【Spring技术专题】「实战开发系列」保姆级教你SpringBoot整合Mybatis框架实现多数据源的静态数据源和动态数据源配置落地

洛神灬殇

spring mybatis springboot 数据源切换 2024年第六篇文章

数据资产入表“倒计时”,企业该如何抓住红利?

用友BIP

数据资产

新特性速览!Sermant重磅更新,1.3.0 release版本发布

华为云开源

微服务治理 sermant 字节码增强框架

亿级流量摩擦出来的 ES 稳定性之道

常清静

方法论 ES 建模 Elastic Search ES优化

小度推出小度学习机K16:内容、AI功能、软硬件配置全面升级

新消费日报

揭秘加密货币周期:如何通过顶级代币指标洞察市场变化

Footprint Analytics

区块链 加密货币

软件测试开发/全日制/测试管理丨测试左移和测试右移

测试人

软件测试 测试开发

Capture One Pro 22 for Mac(RAW图像处理软件) v15.4.2.12永久激活版

mac

苹果mac Windows软件 Capture One Pro 22 RAW文件转换器

通过小程序容器轻松打造自有App小程序生态

Geek_2305a8

数据如何驱动AI大模型的竞争优势

百度开发者中心

人工智能 AI 大模型

请重视你的简历

老张

面试 简历优化 简历

服务器里面打开浏览器访问不了会是什么原因

德迅云安全杨德俊

助力 AI 技术共享,蚂蚁开源又一核心技术“因果学习系统 OpenASCE”

可信AI进展

人工智能 机器学习 开源

深入理解 Docker 核心原理:Namespace、Cgroups 和 Rootfs

EquatorCoco

Docker 容器化 项目开发

好用的鼠标键盘记录工具:Mouse And Keyboard Recorder激活中文

胖墩儿不胖y

Mac软件 鼠标管理工具 Mac软件鼠标辅助

2024提升计划|优秀程序员的10大共性特征

SoFlu软件机器人

程序员 软件开发 代码 测试 单元测试 构架

探索跨语言、跨模态、跨任务的大模型驱动应用生态繁荣

百度开发者中心

人工智能 大模型

小程序怎样成为平台““破壁人”?全网引流的3种姿势!

Geek_2305a8

软件测试/测试开发/岗位内推丨字节跳动岗位开放

测试人

软件测试

快手商品详情数据接口(ks.item_get)丨快手API接口

tbapi

快手商品详情数据接口 快手API接口 快手商品数据接口 快手数据采集

小程序能否成为移动应用实现动态更新与敏捷迭代的突破口?

Geek_2305a8

简单聊聊数据库可以做什么,有什么用?

行云管家

数据库 云计算 大数据

2023 CSIG青年科学家会议丨多模态大模型时代下的文档图像处理

热爱编程的小白白

精彩回顾 | 《国产数据库共话未来趋势》技术沙龙上海站成功举办!

阿里云数据库开源

数据库 阿里云 数据管理 国产数据库 polarDB

Hackathon | Mint Blockchain 启动全球 NIP 创意提案黑客松活动!

NFT Research

blockchain 黑客松 NFT\

AI时代我们的IT团队架构应该如何应变

Onegun

人工智能 AI 团队组织

探索大模型在端侧应用的新形态

百度开发者中心

人工智能 图像识别 大模型

论SOA中仲裁的价值_SOA_Hartmut Wilms_InfoQ精选文章