【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

SOA 专用消息模式

  • 2008-01-18
  • 本文字数:2051 字

    阅读完需:约 7 分钟

Duane Nickull ,OASIS SOA 参考模型技术委员会(SOA-RM)的主席和 Adobe 的高级技术传道者宣布他们刚刚发表了一份关于SOA 专用消息模式的最新白皮书。Duane 这么说道: > 该白皮书审视了SOA 专用消息模式。多数人仍然错误地认为SOA 局限在请求- 应答模式。随着大多数关注SOA 的标准认识到还有其他可选模式,如订阅- 推(subscribe-push)和探测- 匹配(probe-match),以上认识离实际情况差得很远。

Duane 论述了 Web 2.0 和 SOA 间的密切关系: > ……Web 2.0 不是作为一个静态架构来定义的。Web 2.0 通常可以被当作架构和设计模式的一个公共集,它们可以在多种环境中实现。公共模式的列表包括网络聚合应用(Mashup),协作 - 参与(Collaboration-Participation),软件即服务 (SaaS),语义标签(Semantic Tagging)(分众分类法 folksonomy),以及富用户体验(Rich User Experience)(即大家熟知的富互联网应用)模式等等。对于软件架构师来说主题还在增加中,比如信任你的客户,利用集体智慧。出于功能的考虑,多数 Web 2.0 架构模式都依赖于 SOA。当基于这些模式来设计 Web 2.0 应用的时候,架构师常常对移动数据有专门的需求。企业采用这些模式时需要专门考虑几个方面的能力:可伸缩性(scalability),灵活性 (flexibility)(在多个消息交换模式方面),以及将服务交付给多个不同消费者的能力。由于事件类型的多样性,架构师对数据交互的要求往往超越简单的请求 - 应答模式,并且会采用更加健壮的消息交换模式。结果导致了许多专用平台不断演化来满足这些需求。

幸运的是,该白皮书为那些不太熟悉 SOA 概念的读者包含了一份优异的概述。该白皮书也设法讨论了永恒的火焰战争(flame-war,译注:互联网上由非建设性的批评而引发的激励争吵)的另一个候选, ESB 能够在 SOA 基础设施中扮演的角色: > 公共服务总线实际上是一个虚拟环境,通过它服务可以在结构上被所有潜在的消费者使用。它一般被作为企业服务总线(ESB)引用,它有一个专门的子组件的集合,组件包括了命名和查找目录,注册 - 仓库(registry-repositories),服务提供者接口(提供连接能力和集成系统),以及标准的标准化集合和使所有连接的设备可以进行无缝通讯的协议。高级 ESB 厂商还提供了可以将服务聚集形成复杂的流程和工作流的工具。

正如你可能期望沉溺于 Duane(和 Adobe 的)经历,在讨论作者想得出的观点时,白皮书使用了一个非常好的 SOA 和 Web 2.0 参考架构。根据白皮书的说法,SOA 的核心公理是: > 服务自身应该从属于使用它们的高层系统。如果你部署的服务是一个自动化流程管理系统的一部分,服务自身应该不知道(或者不关心)它被谁使用。……使服务消费者不知道服务如何交付它们的功能。这样可以导致组件间干净地解耦,这是现代面向服务系统的另一个优雅的架构性特征。对服务内部工作机制的依赖是 SOA 的另一个反模式,应该被避免。

白皮书的前 10 页是关于 SOA 的一个优异概述,明显参杂了作者的实践经验。就冲着这一点,该白皮书就值得一读。白皮书的第 4 节讨论了可以用在基于 SOA 的应用中的不同的消息交换模式:- 简单的请求 - 应答(Simple request-response)。

  • 经由注册的请求 - 应答(Request-response via the registry):“架构内用到了一个可选的服务注册,可以帮助客户端自动配置它的服务客户端的某些方面。服务提供者将服务细节有关的变化推给消费者订阅的注册。当改变出现时,服务消费者会得到通知,它会去配置它的服务客户端与服务组件进行对话,以及配置它们之间的关系,配置使用语言和环境特有的特性。”
  • 订阅 - 推(Subscribe-push):“在这种模式中,一个或者多个客户端使用服务登记订阅以接收基于某些条件的消息。不考虑条件的话,模式的外观是一样的。”
  • 探测 - 匹配(probe-match):“……一个简单的客户端可以给单一结构上的几个端点多播或广播一条消息,促使这些端点基于某一的条件进行应答。”
  • RIA 模式(Patterns for RIA):“创建富互联网应用系统 (RIA) 需要超越传统请求 - 应答模式水平的数据管理。对于一个富客户, 更具表现力的体验通常需要更多数据密集型交互,这在管理客户端和服务层间的数据上提出了新的挑战。”
  • 数据分页(Data paging):“某些服务自动的完成大数据集的分页,这使开发者关注核心应用系统业务逻辑,而不是为基本的数据管理基础架构操心。”
  • 数据推(Data push):“某些服务提供数据推的能力,使数据自动的被推到客户端应用而不需要轮询(与之相反的是上面列出的‘订阅 - 推’模式)”

上述看上去似乎是一个完整的列表。是否还有消息交换模式(MEP)没有被覆盖到?是否某些消息交换模式不是必须的?

查看英文原文 Specialized Message Patterns for SOA - - - - - -

译者简介:王志雄,长期从事软件开发工作,项目集中在 EAM 和设备点检管理领域。2004 年转入 JAVA 领域,曾经在项目中使用过 Hibernate、Struts、Spring 等。关心软件技术和相关工具的动态,将其中成熟的技术和工具应用到实际的项目之中。关心开源软件的发展动态以及软件过程和敏捷开发的实践探索。

2008-01-18 01:11777

评论

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

【面试题系列】CurrentHashMap的实现原理

颜淡慕潇

Java HashMap底层原理 面试题系列

Linux常用命令

我是一个茶壶

Linux 命令 11月月更

量化合约对冲交易机器人app系统开发案例

开发微hkkf5566

Go 容器之队列的几种实现方式

宇宙之一粟

队列 数据结构与算法 Go 语言 11月月更

【网易云信】深度剖析「圈组」关系系统设计 | 「圈组」技术系列文章

网易智企

音视频 即时通讯IM

Linux进程管理

A-刘晨阳

Linux 运维 进程 11月月更

类和动态内存分配

Maybe_fl

企业如何正确使用低代码转型升级

力软低代码开发平台

小巨人,大能量!融云成功入选国家级专精特新“小巨人”企业

融云 RongCloud

企业 IM RTC

服务器的正向代理与反向代理

我是一个茶壶

服务器 正向代理与反向代理 11月月更

Java NIO关键概念之Buffer

老农小江

Java 源码解读 java nio

干货收藏|Clickhouse 常见问题及解决方案汇总

云智慧AIOps社区

MySQL 数据库 Clickhouse Data 故障处理

软件测试面试真题 | 什么是PO设计模式?

测试人

软件测试 自动化测试 PO 测试开发 UI自动化测试

KubeEdge云原生边缘计算公开课首发

华为云开发者联盟

云原生 后端 华为云 企业号十月 PK 榜

深度剖析「圈组」关系系统设计 | 「圈组」技术系列文章

网易云信

音视频 即时通讯IM

国内低代码开发平台有哪些作用?

优秀

低代码开发平台

20款免费项目管理软件大盘点!你用过几款?

优秀

项目管理软件

G1 垃圾收集器深入剖析(图文超详解)

mikechen的互联网架构

Java 架构 面试 G1垃圾回收器 11月月更

硬核技术助力提效,腾讯广告持续探索产学融合新航图

科技热闻

赋能千行百业数字化转型,OpenHarmony生态新成果即将亮相HDC2022

OpenHarmony开发者

Open Harmony

一文读懂加密资产板块的盈利潜力与投资机会

鳄鱼视界

活动预告 | 2022 SACC 中国系统架构师大会

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

OpenMLDB 线上引擎资源需求预估模型,助你快速预估资源消耗

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

OpenMLDB BUG 悬赏令

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Linux磁盘管理

A-刘晨阳

Linux 运维 磁盘 磁盘分区 11月月更

2022年10月中国汽车智能网联月度观察

易观分析

汽车 智能网联

Linux三剑客grep、sed、awk以及正则表达式

A-刘晨阳

Linux 运维 11月月更 三剑客

大专学历参加大数据培训,学费多少?

小谷哥

ArrayList源码解析

Jeremy Lai

源码 ArrayList

前端性能优化常问面试题-防抖节流

肥晨

防抖 节流 防抖节流 前端面试题 11月月更

OpenMLDB 新手宝典 开发者上手必读

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

SOA专用消息模式_SOA_Mark Little_InfoQ精选文章