背景:
许多企业和政府部门使用不同技术,建设了不同规模的应用系统,造成了”信息孤岛”现象,即我拥有数据,但和其他部门的数据不一致,难以整合,此外还包括一些遗留的系统,要想整合也不是件容易的事;另一方面,如果业务需求不断变化,传统的研发是对业务需求直接映射,大大降低了系统的灵活性,可以把业务进行适当的抽象通过服务的方式满足系统的需求,由此出现SOA面向服务的体系结构,提倡将不同应用程序的业务功能封装成“服务”并宿主起来,通常以接口和契约的形式暴露并提供给外界应用访问(通过交换消息),达到不同系统可重用的目的。
SOA的好处
1. 松耦合:由于服务自治,有一定封装边界,服务调用交互是通过发布接口。这意味着应用程序不感兴趣的服务如何被实现。
2. 位置透明:服务的消费者不必关系服务位于什么地方。
3. 可在异构平台间复用。可以将遗留系统包装成服务。
4. 便于测试,能并行开发,较高可靠性和良好可伸缩性。
SOA的一些定义:
SOA面向服务的体系结构,是构造分布式系统的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。它采用开放标准、与软件资源进行交互并采用表示的标准方式。
SOA是一个范式,用于组织和利用可能处于不同所有权范围控制下的分布式系统。
SOA的核心是服务
服务就是经过封装可重复利用的功能,通过建立可组合、可重用的服务体系加快项目开发进程,减少IT 业务冗余。
其中 企业服务总线 ESB 是SOA系统中的核心基础设施,什么是ESB?严格来说ESB不是某一产品,而是一种中间件模式,是一个应用集成、协调资源和操纵信息的框架。SOA关注的是服务的整个生命周期,而ESB关注的是服务的整合,类似于服务中介, ESB的核心功能可分为路由服务、消息协议转换以及数据传输三大模块。
路由服务:消息路由,在服务之间路由消息,控制消息的存储和分发。 基于内容路由服务根据输入(出)数据内容的内容以确定需要在哪里对输出进行路由; 基于主题的路由,可有效的实现消息的发布和订阅,实现数据和应用之间的松散耦合; 点对点路由服务
消息协议转换: 分为协议转换,转换请求方和服务方的协议,解决异构系统由于通信协议而不能互联互通的问题; 消息格式转换(XML、File等),解决异构系统之间由于数据描述方式不同而不能互联互通的问题
数据传输:执行数据的传输或接收,消息通讯服务 MQ,消息中间件; 同步或异步通信; 可靠传输-断点续传等; 事物控制-发送方只有成功发送后才能删除队列中的消息,否则回滚事物,接收方只有成功接收或所有订阅者确认消息后,才删除持久化存储的消息;数据压缩及加密解密、序列化/反序列等; 发送接收传输服务: JMS、 HTTP/HTTPS、 Socket、 RMI、 WebServices等,与主流中间件集成
接下来简单模拟一下数据交换的实现,实现目标是一个分布式、可扩展节点的、不同关系型数据库之间的数据共享
http://blog.sina.com.cn/s/blog_493a84550100j5v7.html
http://blog.youkuaiyun.com/dinglang_2009/article/details/44516599