企业 SOA 设计(1)–ESB 设计

最近为公司完成了一个 ESB 的设计。下面简要说明一下具体的设计方案。

 

企业 SOA 整体方案

在前一篇《SOA、ESB、NServiceBus、云计算 总结》中说到,SOA 是面向服务的架构,其核心思想是把业务进行组件化,而业务组件的能力服务化。

我们的整个 SOA 的设计分为两个层面:一个是系统间的 SOA 设计,另一个则是单个系统内的 SOA 设计。系统间的 SOA 设计,主要是设计一个 ESB 系统来实现各业务系统间的交互。而系统内部的 SOA 设计,则是建立一个组件化的技术平台,使得系统的开发能以一个个业务组件的形式完成,并通过技术平台来实现各业务组件的组合与互连。

一般说的 SOA 设计,都是在讲如何进行系统间的互连,例如如何进行 ESB 的设计。但是,不论是系统间互连,还是系统内部的组件化,其实都是 SOA 思想在不同层面上的体现。而我认为,应用系统内部的 SOA 设计,会更重要。因为它不但是一个低耦合、高复用的产品设计,而且也为系统间的 SOA 提供了更好的支持。

本文,主要说明如何实现 ESB 的设计。而更重要的应用系统内部的组件化产品开发平台,则留到下一篇。

 

ESB 目标功能

在前一篇中,列出了一个较完整 ESB 应有的功能。SOA 不但包括简单的系统间互边的功能,也应该包含更高级的 BPM 业务流程编排的功能。

下面,简单列出了我们对于我们的 ESB 的功能树:

图中,功能按优先级进行了排序。第一个阶段,只会实现其中红色的部分。而服务编排,则放到了最后。红色部分,是一个 ESB 应该具有的最小功能集。在交互模式部分,我选择了实现‘响应/请求’模式,这种交互方式在系统间互连时场景相对较少,但是不需要引用 MSMQ 等功能,所以实现起来会更简单。

 

ESB 主体设计

对于 ESB 的主体设计,是参考了网上另一个 ESB 的设计,下面是它的设计图:

 

ESB 详细设计

首先,规划出 ESB 整个系统内部的所有组件。

  1. Web Portal:ESB 对外以网站的形式公布。同时,服务调用者、提供者,都是直接使用网站提供的功能。
  2. Adapter:协议的适配器组件。
  3. Service Invoker:服务的同步调用器。
  4. Async Invoker:异步方式的同步调用器。
  5. Service Mocker:这个组件用于实体 ESB 的服务可以以 WS 等方式暴露。
  6. ESB Message:ESB 内部的消息结构体。
  7. Service Registry:服务的注册库。
  8. Service Router:服务的路由器组件。
  9. Service Router Cache Notification:路由缓存通知组件。
  10. Logger:日志组件。
  11. Exception Handler:异常处理组件。
  12. Performance Counter:服务调用过程中的一些性能统计工具。

 

以下是一些详细的调用设计。

ESB 网站:

模拟服务:

服务的调用:

服务调用过程中的管道模块设计:

路由表及路由更新:

适配器:

 

最后,是最重要的持久化的领域实体:

 

 

细节不说了,有兴趣的朋友可以参考初步的设计,并欢迎与我交流。:)

时间: 2024-10-27 23:33:22

企业 SOA 设计(1)–ESB 设计的相关文章

企业 SOA 设计(1)–ESB 设计

最近为公司完成了一个 ESB 的设计.下面简要说明一下具体的设计方案.   企业 SOA 整体方案 在前一篇<SOA.ESB.NServiceBus.云计算 总结>中说到,SOA 是面向服务的架构,其核心思想是把业务进行组件化,而业务组件的能力服务化. 我们的整个 SOA 的设计分为两个层面:一个是系统间的 SOA 设计,另一个则是单个系统内的 SOA 设计.系统间的 SOA 设计,主要是设计一个 ESB 系统来实现各业务系统间的交互.而系统内部的 SOA 设计,则是建立一个组件化的技术平台,

《SOA Web Service合约设计与版本化》目录—导读

版权声明 SOA Web Service合约设计与版本化 Authorized translation from the English language edition, entitled Web Service Contract Design and Versioning for SOA, 978-0136135173 by Thomas Erl, Anish Karmarkar, Priscilla Walmsley, Hugo Haas, Umit Yalcinalp, Canyang

《SOA Web Service合约设计与版本化》—第1章1.6节补充阅读

1.6 补充阅读SOA Web Service合约设计与版本化下面是一些推荐的补充书目,可以进一步阐释本书中包含的关键主题. SOA Principles of Service Design(中译版<SOA服务设计原则>)关于面向服务设计范型的综合参考书,包含本书中引用到的所有原则的全面描述:SOA Design Patterns 该书提供了设计模式的详尽目录,其中许多模式都是和Web服务合约设计与版本化相关的.你可以从http://www.soapatterns.org检索到这些模式的简单描

谈谈企业的持续交付流水线设计

本文讲的是谈谈企业的持续交付流水线设计,有一天,业务人员急冲冲的跑过来,对你说生产上出现了一个严重BUG,必须要尽快修复.你听完问题描述后,胸有成竹坐定并迅速定位问题,随后改动了一行代码并提交,系统开始自动编译.各个环境自动化测试.发布上线.几分钟后,生产环境上该BUG已经被修复掉. 上面所提到的场景,这是不是很美妙?但是想必不少读者要忍不住要吐槽了,这太不实际了:新功能上线测试不要时间么?新增了功能肯定要做回归测试,这都需要一定的时间.况且怎么可以随便部署上线?还得通过预发演练.走发布审批流程

《SOA Web Service合约设计与版本化》—第1章1.8节符号、图形和风格约定

1.8 符号.图形和风格约定SOA Web Service合约设计与版本化1.8.1 符号图例本书包含了一系列的图表,也就是书中所提到的"图".在所有这些图表中使用的主要符号在彩色插页中逐个进行了描述. 1.8.2 突出显示的代码书中有突出显示的代码.通常来说,突出显示的代码是同当前正在讨论的话题相关的. 1.8.3 要点总结本书的大多数主要章节之后都会提供一个列表形式的简明概要.有些内容较少或者非常易懂的章节则没有提供这样的专门总结. 本文仅用于学习和交流目的,不代表异步社区观点.非

《SOA Web Service合约设计与版本化》—第1章1.9节附加说明

1.9 附加说明SOA Web Service合约设计与版本化下面各小节介绍由Prentice Hall出版的"Thomas Erl面向服务计算系列"丛书所提供的补充信息和资源. 1.9.1 本丛书官方站点在http://www.soabooks.com上可以找到关于本丛书中所有书的最新信息以及各种不同的支持资源.请一定别忘了查看更新.勘误和资源(比如补充的张贴图). 1.9.2 Visio模板Prentice Hall提供了一个Visio模板,其中包含了本丛书中各书使用的彩色符号.

《SOA Web Service合约设计与版本化》—第1章1.2节本书的目标

1.2 本书的目标SOA Web Service合约设计与版本化总体来说,本书中的章节是带着下列主要目标来撰写的: 在SOA的上下文中来论述Web服务合约相关的技术:突出介绍经过验证的合约相关技术,以及用于合约设计和版本化的模式:展示第一代Web服务技术(WSDL.SOAP.XML Schema)如何同诸如WS-Addressing(Web服务寻址)以及WS-Policy(Web服务策略)这样的WS-*技术一起工作:突出介绍各种不同Web服务技术的应用如何会受到SOA设计原则和模式的影响.本文仅

《SOA Web Service合约设计与版本化》—第1章1.3节读者对象

1.3 读者对象SOA Web Service合约设计与版本化本书可以被用作下列类型读者的教材或者参考书: 想要学习如何在SOA项目中使用Web服务技术的开发人员:想要学习如何为了支持SOA项目来设计Web服务合约的架构师:想要学习服务合约版本化的治理(governance)专家:想要更好地理解如何构建Web服务合约来支持面向服务的SOA实践人员:想要对现代Web服务合约与消息底层的概念和机制有更深入了解的IT专业人员.本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,

《SOA Web Service合约设计与版本化》—第1章1.4节本书不涉及的内容

1.4 本书不涉及的内容SOA Web Service合约设计与版本化本书要讲解的只是关于Web服务合约的内容.它探索了与Web服务合约的开发.设计和版本化,以及与相关消息设计主题有关的大范围的各种技术和技巧.然而,本书并不会深入到Web服务程序的开发或者实现.因此,许多用于"连线"(wire)上的主题并没有包含在其中,比如可靠消息传递.安全和事务等. 类似的,虽然本书的内容属于SOA这个大的环境之中,但是其中只有一章用来解释SOA的基本术语和概念.如果你是刚刚涉足SOA,那么请务必提