本系列的W?1 部分
介绍了有x构设计师以及 SOA 架构的知识,分析?SOA 架构师在设计 SOA
pȝ架构时有哪些应该特别注意的地斏V本文将延箋W一部分的内容,向您介绍?SOA Z业架构设计带来的媄响,以及在构建基?SOA
架构的企业系l时应该怎样保证所构徏的系l架构能够满系l中不同的服务别需求?/blockquote>1Q?SOA Z业架构设计带来的媄?/span>
1Q? SOA 的特点及其用范?/span>
SOA 既不是一U语aQ也不是一U具体的技术,它是一U新的Y件系l架构模型?SOA 最主要的应用场合在于解军_Internet环境下的不同商业应用之间的业务集成问题。Internet环境区别于Intranet环境的几个特点主要是Q?/p>
(a)大量异构pȝq存Q不同计机g工作方式不同Q操作系l不同、编E语a也不同;
(b)大量、频J的数据传输的速度仍然相对较缓慢ƈ且不E_Q?/p>
(c)无法完成服务QserviceQ的版本升Q甚x本就无法知道互联|上有哪些机器直接或者间接的使用某个服务?/p>
SOA 架构h一些典型特性,主要包括松耦合性,位置透明性以及协议无x。松耦合性要?SOA
架构中的不同服务之间应该保持一U松耦合的关p,也就是应该保持一U相对独立无依赖的关p;位置透明性要?SOA
pȝ中的所有服务对于他们的调用者来说都是位|透明的,也就是说每个服务的调用者只需要知道他们调用的是哪一个服务,但ƈ不需要知道所调用服务的物理位|?
在哪里;而协议无x要求每一个服务都可以通过不同的协议来调用。通过q些 SOA 架构所h的特性我们可以看刎ͼSOA
架构的出Cؓ企业pȝ架构提供了更加灵zȝ构徏方式Q如果企业架构设计师Z SOA
来构建系l架构,可以从底层架构的别来保证整个pȝ的松耦合性以及灵zL,q都为未来企业业务逻辑的扩展打好了基础?/p>
1Q? SOA 架构的分层模?/span>
接下来简要介l一?SOA pȝ中的分层模型Q整?SOA 架构的分层模型如?所C?/p>

?
SOA
pȝ中不同的功能模块可以被分?层:W一层就是系l已l存在的E序资源Q例如ERP或者CRMpȝ{。第2层就是组件层Q在q一层中我们用不同的lg?
底层pȝ的功能封装v来。第3层就?SOA
pȝ中最重要的服务层Q在q层中我们要用底层功能组件来构徏我们所需要的不同功能的服务。ȝ来说QSOA
中的服务可以被映成具体pȝ中的M功能模块Q但是从功能性方面可以大致划分ؓ以下三种cdQ?1)商业服务Qbusiness serviceQ?
或者是商业q程Qbusiness
processQ。这一cȝ服务是一个企业可以暴露给外部用户或者合作伙伴用的服务。比如说提交h甌Q用户信用检查,h信用查询?2)商业功能
服务Qbusiness function serviceQ,
q类服务会完成一些具体的商业操作Q也会被更上层的商业服务调用Q不q大多数情况下这cL务不会暴露给外部用户直接调用Q比如说索用户帐户信息,存储?
户信息等?3)技术功能服务(technical function
serviceQ,q类服务主要完成一些底层的技术功能,比如说日志服务以及安全服务等。在服务层之上的W?层就是商业流E层Q在q一层中我们利用已经?
装好的各U服务来构徏商业pȝ中的商业程。在商业程层之上的是W?层表C层了,我们利用表示层来向用h供用h口服务,q一层可以用Z
portal的系l来构徏。以上这5层都需要有一个集成的环境来支持它们的q行Q第6层中的企业服务ȝQESBQ提供了q个功能。第7层主要ؓ整个
SOA pȝ提供一些辅助的功能Q例如服务质量管理,安全理q一cȝ辅助功能?/p>
2Q? SOA 架构中的非功能性服务别(service-levelQ需?/span>
?
了系l的业务需求,架构设计师还必须要保证构建出来的pȝ架构能够满pȝ中的非功能性服务别(service-levelQ需求以及服务质?
QQoSQ方面的需求。在目初始及细化阶D,架构设计师应该与pȝ所有涉及方QStakeholdersQ一P为每一个服务别需求定义其相关的衡?
标准。构建出的系l架构必要能满以下几斚w的服务水准要求:性能、可升性、可靠性、可用性、可扩展性、可l护性、易理性以及安全性。架构设计师?
设计架构q程中需要^衡所有的q些服务U别需求。例如,如果服务U别需求中最重要的是pȝ性能Q架构设计师很有可能不得不在一定程度上牺牲pȝ的可l护?
及可扩展性,以确保满系l性能上的要求。随着互联|的发展Q新构徏的系l对于服务别需求也变得日益重要Q现在基于互联网的企业系l的用户已经不仅仅局
限于是本企业的雇员,企业的外部客户也会成Z业系l的主要用户?
架构设计师的职责之一是要尽可能Cؓ提高pȝ设计人员和系l开发h
员的工作效率考虑。在构徏整个企业pȝ架构的过E中Q需要充分重视各U服务别需求,从而避免在pȝ开发和q行的时候出现重大问题。一个企业pȝ中的?
务别需求往往是十分错l复杂的Q?SOA
架构设计师需要凭借丰富的专业l验和扎实的理论知识来分d抽象pȝ中不同的服务U别需求,?展示了这U分析的q程?
?

l过 SOA 架构设计师分析和抽象的服务别需求主要分Z下几c:
- 性能是指pȝ提供的服务要满一定的性能衡量标准Q这些标准可能包括系l反应时间以及处理交易量的能力等Q?/li>
- 可升U?/b>是指当系l负荷加大时Q能够确保所需的服务质量,而不需要更Ҏ个系l的架构Q?/li>
- 可靠?/b>是指保各应用及其相关的所有交易的完整性和一致性的能力Q?/li>
- 可用?/b>是指一个系l应保一Ҏ务或者资源永q都可以被访问到Q?/li>
- 可扩展?/b>是指在不影响现有pȝ功能的基上,为系l填加新的功能或修改现有功能的能力;
- 可维护?/b>是指在不影响pȝ其他部分的情况下修正现有功能中问题或~陷QƈҎ个系l进行维护的能力Q?/li>
- 可管理?/b>是指理pȝ以确保系l的可升U性、可靠性、可用性、性能和安全性的能力Q?/li>
- 安全?/b>是指保pȝ安全不会被危及的能力?/li>
1) 性能
?
们通常可以Ҏ每个用户讉K的系l响应时间来衡量pȝ的整体性能Q另外,我们也可以通过pȝ能够处理的交易量Q每U)来衡量系l的性能。对于架构设计师?
_无论采取哪种衡量pȝ性能的方法来构徏pȝ架构Q这些对于性能的考虑对系l设计开发h员来说都应该是透明的,也就是说对于pȝ整体架构性能的考虑应该
是架构设计师的工作,而不是系l设计开发h员应该关注的事情。在较传l的ZEJB或者XML-RPC的分布式计算模型中,它们的服务提供都是通过函数?
用的方式q行的,一个功能的完成往往需要通过客户端和服务器来回很多次的远E函数调用才能完成。在Intranet的环境下Q这些调用给pȝ的响应速度?
E_性带来的影响都可以忽略不计,但如果我们在Z SOA 的架构中使用了很多Web
Service来作为服务提供点的话Q我们就需要考虑性能的媄响,其是在Internet环境下,q些往往是决定整个系l是否能正常工作的一个关键决?
因素。因此在Z SOA
的系l中Q推荐采用大数据量低频率讉K模式Q也是以大数据量的方式一ơ性进行信息交换。这样做可以在一定程度上提高pȝ的整体性能?/p>
2) 可升U?/b>
?
升性是指当pȝ负荷加大Ӟ仍能够确保所需的服务质量,而不需要更Ҏ个系l的架构。当Z SOA
的系l中负荷增大Ӟ如果pȝ的响应时间仍能够在可接受的限度内Q那么我们就可以认ؓq个pȝ是具有可升性的。要想理解可升性,我们必须首先了解pȝ
定w或系l的承受能力Q也是一个系l在保证正常q行质量的同Ӟ所能够处理的最大进E数量或所能支持的最大用h量。如果系l运转时已经不能在可接受?
间范围内反应Q那么这个系l已l到达了它的最大可升状态。要惛_U已辑ֈ最大负载能力的pȝQ你必须增加新的g。新d的硬件可以以垂直或水q的方式
加入。垂直升U包括ؓ现在的机器增加处理器、内存或盘。水q_U包括在环境中添|新的机器,从而增加系l的整体处理能力。作Z个系l架构设计师所设计
出来的架构必能够处理对g的垂直或者水q_U。基?SOA
的系l架构可以很好地保证整体pȝ的可升性,q主要是因ؓpȝ中的功能模块已经被抽象成不同的服务,所有的g以及底层q_的信息都被屏蔽在服务之下Q?
因此不管是对已有pȝ的水q_U还是垂直升U,都不会媄响到pȝ整体的架构?/p>
3) 可靠?/b>
可靠性是指确保各?
用及其相关的所有交易的完整性和一致性的能力。当pȝ负荷增加Ӟ你的pȝ必须能够持箋处理需求访问,q确保系l能够象负荷未增加以前一h地处理各个
q程。可靠性可能会在一定程度上限制pȝ的可升性。如果系l负荷增加时Q不能维持它的可靠性,那么实际上这个系l也q不具备可升U性。因此,一个真正可
升的系l必L可靠的系l。在Z SOA 来构建系l架构的时候,可靠性也是必要着重考虑的问题。要在基?SOA
架构的系l中保证一定的pȝ可靠性,必要首先保证分布在系l中的不同服务的可靠性。而不同服务的可靠性一般可以由光|的应用服务器或Web服务器来
保证。只有确保每一?SOA pȝ中的服务都具有较高的可靠性,我们才能保证pȝ整体的可靠性能够得以保障?/p>
4) 可用?/b>
?
用性是指一个系l应保一Ҏ务或者资源应该L可被讉K到的。可靠性可以增加系l的整体可用性,但即使系l部件出错,有时却ƈ不一定会影响pȝ的可?
性。通过在环境中讄冗余lg和错误恢复机Ӟ虽然一个单独的lg的错误会对系l的可靠性生不良的影响Q但׃pȝ冗余的存在,使得整个pȝ服务仍然?
用。在Z SOA
来构建系l架构的时候,对于关键性的服务需要更多地考虑其可用性需求,q可以由两个层次的技术实现来支持Q第一U是利用不同服务的具体内部实现内部所Z
的框架的定w或者冗余机制来实现Ҏ务可用性的支持Q第二种是通过UDDI{动态查扑配方式来支持pȝ整体的高可用性。在 SOA
架构设计师构Z业系l架构的时候,应该l合考虑q两个方面的内容Q尽量保证所构徏?SOA pȝ架构中的关键性业务能h较高的可用性?/p>
5) 可扩展?/b>
?
扩展性是指在不媄响现有系l功能的基础上,为系l添加新的功能或修改现有功能的能力。当pȝ刚配|好的时候,你很难衡量它的可扩展性,直到W一ơ你必须?
扩展pȝ已有功能的时候,你才能真正去衡量和检整个系l的可扩展性。Q何一个架构设计师在构建系l架构时Qؓ了确保架构设计的可扩展性,都应该考虑下面
几个要素Q低耦合Q界?interfaces)以及装。当架构设计师基?SOA
来构Z业系l架构时Q就已经隐含地解决了q几个可扩展性方面的要素。这是因?SOA
架构中的不同服务之间本n׃持了一U无依赖的低耦合关系Q服务本w是通过l一的接口定义(可以是WSDLQ语a来描q具体的服务内容Qƈ且很好地装?
底层的具体实现。在q里我们也可以从一个方面看到基?SOA 来构架企业系l能为我们带来的好处?/p>
6) 可维护?/b>
?
l护性是指在不媄响系l其他部分的情况下修改现有系l功能中问题或缺L能力。同pȝ的可扩展性相同,当系l刚被部|时Q你很难判断一个系l是否已l具?
了很好的可维护性。当创徏和设计系l架构时Q要x高系l的可维护性,你必考虑下面几个要素Q低耦合、模块性以及系l文档记录。在企业pȝ可扩展性中?
们已l提C SOA
架构能ؓpȝ中暴露出来的各个子功能模块也是服务带来低耦合性和很好的模块性。关于系l文档纪录,除了底层子系l的相关文档外,Z SOA
的系l还会引用到许多pȝ外部的由W三Ҏ供的服务Q因此如果h力资源准许的话,应该增加专职的文档管理员来专门负责有x个企业系l所涉及的所有外部服
务相x档的攉、归cd整理Q这些相关的文档可能涉及到第三方服务的接口(可以是WSDLQ、服务的质量和别、具体性能试l果{各U相x档。基?
q些文档Q就可以?SOA 架构设计师构Z?SOA 架构提供很好的文档参考和支持?/p>
7) 可管理?/b>
?
理性是指管理系l以保整个pȝ的可升性、可靠性、可用性、性能和安全性的能力。具有可理性的pȝQ应具备Ҏ务质量需求(QoSQ的pȝ监控?
力,通过改变pȝ的配|从而可以动态地改善服务质量Q而不用改变整体系l架构。一个好的系l架构必能够监控整个系l的q行情况q具备动态系l配|管理的
功能。在对复杂系l进行系l架构徏模时Q?SOA
架构设计师应该尽量考虑利用系l整体架构构建在已有的成熟的底层pȝ框架QFrameworkQ上。对?SOA
架构设计师来_可以选择的底层系l框架有很多Q可以选用ZMQ, MessageBorkerQWebSphere Application
Server{品来构徏企业服务ȝQEnterprise Service BusQ以支持企业?SOA
pȝ架构Q也可以选用较新的基于WebSphere Application Server 6中内嵌的Sibus来构Z业的ESB以支?SOA
pȝ架构。具体选择哪种底层框架来实?SOA
pȝ架构要根据每个系l各自的特点来决定,但这些底层的框架都已l提供了较高的系l可理性。因此,分析q择不同的品或底层框架来实C业系l架构也
是架构设计师的主要职责之一。有关于如何利用已有底层架构来构?SOA pȝQ中?SOA
设计中心已经发表了一pd相关的文章,大家可以在DeveloperWorks中的 SOA 专栏看到它们?/p>
8) 安全?/b>
?
全性是指确保系l安全不会被危及的能力。目前,安全性应该说是最困难的系l质量控制点。这是因为安全性不仅要求确保系l的保密和完整性,而且q要防止影响
可用性的服务拒绝(Denial-of-Service)d。这p求当 SOA
架构设计师在构徏一个架构时Q应该把整体pȝ架构可能地分割成各个子功能模块Q在一些子功能模块暴露为外部用户可见的服务的时候,要围l各个子模块?
建各自的安全区,q样更便于保证整体系l架构的安全。如果一个子模块受到了安全攻击,也可以保证其他模块相对安全。如果企?SOA
架构中的一些服务是由Web Service实现的,在考虑q些服务安全性的时候也要同时考虑效率的问题,因ؓWS-Security会ؓWeb
Service带来一定的执行效率损耗?/p>
3Q结束语
?
pd两部分介l了有关架构设计师以?SOA 架构的知识,分析?SOA 架构师在设计 SOA
pȝ架构时有哪些应该特别注意的地方ƈ在最后简要介l了在构建基?SOA
架构的企业系l时应该怎样保证所构徏的系l架构能够满系l中不同的服务别需求。从架构设计师的角度Q?SOA 是一U新的设计模式,Ҏ学。因此,
SOA
本n늛了很多的内容Q也触及Cpȝ整体架构设计、实现、维护等各个斚w。本文的内容只是涉及C有关于架构方面的一部分内容Q希望能对广大的
SOA pȝ开发设计h员vC定的帮助作用?/p>
参考资?
- Patterns: Service-oriented Architecture and Web ServicesU皮书,SG24-6303-00Q?004 q?4 月,作者Mark Endrei {?/li>
- DeveloperWorks ?a > SOA ?Web 服务专区有大量专题文章以及关于开?Web 服务应用E序的入门、中U和高教程?/li>
- 有关随需应变商务的更多信息,请参?Developer resources for an on demand world Web site
- Web 服务目角色 描述?Web 服务开发项目中所涉及到的各种不同的工作角Ԍ包括各自的目标,d以及彼此之间是如何协作的?/li>
- 面向服务的分析与设计原理一文研I了OOAD、EA ?BPM 中的适当原理?/li>
- 企业服务ȝ解决Ҏ剖析Q第 1 部分 介绍了面向服务的体系l构(service-oriented architectureQ?SOA )和企业服务ȝ(Enterprise Service BusQESB)的基本知识,ESB的技术沿革,以及ESB?SOA 之间的关pR?
关于作?/span>
 |
| ??IBM软g工程师,工作在IBM中国软g开发实验室 - SOA Design CenterQ从事Incubator?SOA QGrid目的工作,对J2EE架构?SOA 架构、MDA/MDD以及|格计算{技术有较深入的研究?
联系方式Q?a href="mailto:wangq@cn.ibm.com">wangq@cn.ibm.com |