第二章、大型分布式java应用与SOA 随着业务复杂性的上升,单系统无法满足需求。需要多系统细化分工!拆分系统必然带来系统之间信息交互的问题。简单地办法是统一交互标准——SOA。
SOA全称是面向服务架构。它强调系统间用标准的服务方式进行交互,各系统允许采用不同语言、不同框架,但交互必须以标准的服务进行。
挑战:
服务器多级调用带来的延时;
调试/跟踪困难;
更高的安全监测需求;
现有应用的移植;
Qos支持(限制流量、机器资源分配)
高可用、可伸缩。
多版本依赖管理。
综合,实现一个大型应用的SOA平台应满足:
1) 统一服务交互方式,实现现有应用无缝集成。
2) 提供调试跟踪支持。
3) 依赖管理;
4) 高可用可伸缩。
2.1基于SCA实现SOA SCA(Service Component Architecture):大厂商联合组织制定的SOA具体实现规范。
为了减少系统实现侵入,采用XML定义Component映射到系统本身接口的实现上。SCA允许多种映射方式。
SCA提供了清晰的发布服务、调用服务和无缝与现有应用的集成。调试跟踪、依赖管理、高性能高可用未定义。
2.2、基于ESB实现SOA
可以认为ESB只是个概念:基于消息中间件来实现系统间的交互。5要素:
标准的消息通信格式;
消息路由;
支持多种信息交互类型;
支持多种网络协议;
支持多种数据格式并相互转换。
综述:消息模式承担了统一服务交互,支持同步异步交互。调试跟踪没定义;通过消息流转判断依赖关系。高性能高可用取决框架。
2.3、基于Tuscany实现SOA Tuscany是IBM和Bea捐献给Apache的产品,也是最常用的SCA实现框架之一。
支持更多的发布方式:Webserver、ajax、corba、rmi等等
调用服务:和SCA一样支持更多应用集成方式,
支持的通信及交互方式:比SCA支持更多的通信方式
综述:调试跟踪会把错误带到调用端;依赖管理、高性能高可用没有在SCA上扩展。
2.4、基于Mule实现SOA Mule是常用ESB实现框架之一。
发布服务:配置上较为简单,支持以WebService、jms等方式将Spring和普通java对象发布为Mule Service,相对Tuscany弱了。
调用服务:相对麻烦,由于ESB强调以消息方式发送给总线决定的。
通信方式:Webservice和jms两种。
交互方式:Mule可明确指定synchronous的参数实现同步通信。在不指定的情况下默认异步。
调试跟踪:未做特别处理。
依赖管理:有开源服务治理框架MuleGalaxy。
高性能高可用:无专门处理。
总结
SCA及其实现框架对于服务的统一交互支持很好。ESB则适用于需要解耦方式的服务交互,及复杂的多服务交互场景。共通地,都需要自定义扩展:调试跟踪、依赖管理、高性能高可用