每个系统上都有多种业务逻辑,这就像在一个小超市中,一个人负责收银、清洁、摆货、咨询等各种各样的事情,当来超市的顾客多到一定程度,这个人就没办法再负责这么多的事情了,系统也同样如此。

第一个现象就是系统多元化带来的问题,可采用对公用逻辑的部分进行抽象的方法,形成多个按领域划分的共用业务逻辑系统;第二个现象是系统访问量、数据量上涨后带来的典型问题,当超市的顾客不断增加时,通常超市采取分工的方式更好地服务顾客。同样,对系统而言,也会采取拆分系统的方式来解决。

在构建了共用业务逻辑系统拆分系统后,最明显的问题就是系统之间如何交互。

如果不控制,会出现多个系统之间存在多种交互方式:Http、TCP/IP+NIO、Hessian/RMI、WebService等;同步、异步等方式可能都会出现,这会导致开发人员每访问一个公用业务逻辑系统或拆分出来的系统后,都有可能要学习不同的交互方式;同时也会造成各开发团队重复造轮子,提供不同交互方式用的框架,这对于应用的性能、可用性而言,也带来了极大的挑战。

对于以上问题,很容易想到的解决方法就是统一交互的方式,SOA无疑是实现这种方式的首选。

SOA全称是:面向服务构架,它强调系统之间以标准的服务方式进行交互,各系统可采用不同的语言、不同的框架来实现,交互则全部通过服务的方式进行。

一、基于SCA实现SOA平台

SCA:Service Component Architecture.

发布服务: 服务遵照SOA以接口方式对外提供,发布服务首先要求系统本身已经有相应的接口实现。为了减少对系统实现的侵入,通过XML定义Component映射到系统奔上的接口实现上。在定义Component后,则可将Component实现的接口已服务的方式发布。

支持的通信和交互方式: SCA标准默认提供的通信方式为SCA、WebService和JMS三种。SCA方式是指由框架根据运行状况来选择采用相应的通信方式,例如框架发现需要调用的服务在同一JVM中,则会自动切换为本地调用,如在不同JVM中,则会采用WebService或JMS等方式;WebService的实现为Http方式:JMS则可用多种方式来实现,例如TCP/IP、HTTP等,这取决于具体的SCA框架。

二、基于ESB实现SOA平台

ESB只是一个概念,核心思想是基于消息中间件来实现系统间的交互。

基于消息中间件所构建的此系统交互的中间场所称为总线,系统间交互的数据格式采用统一的消息格式,由总线完成消息的转化、路由,发送到相应的目标应用,基于ESC构建的系统结构:

通常ESB框架须具备以下5个要素:

  1. 标准的消息通信格式

ESB框架中,要定义系统发送及接收消息时的消息格式,以便各个系统保持同样的方式与总线通信。

2. 消息路由

消息路由是指当总线接收到消息后,根据消息中的数据来决定需要调用的系统。

3. 支持多种的消息交互类型

消息交互时要支持请求/响应和发布/订阅等方式,请求/响应方式会更加方便实现同步请求,发布/订阅方式则更加方便实现异步的消息广播。

4.  支持多种网络协议

总线要和多个系统进行交互,通常要支持多种网络协议,例如:TCP/IP、UDP/IP、HTTP等

5.   支持多种数据格式并能够进行相互转换

多个系统均须发送消息至总线,并由总线将消息转发,但各个系统消息中的数据格式可能不一致,此时总线要支持数据的转换。

SOA基础的更多相关文章

  1. SpringCloud学习之soa基础

    一.soa简单介绍 1)面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.SOA是解决复杂业务模块,提高扩展性,维护性,可伸缩 ...

  2. 如何从零开始实现一个soa远程调用服务基础组件

    说起soa远程调用基础组件,最著名的莫过于淘宝的dubbo了,目前很多的大型互联网公司都有一套自己的远程服务调用分布式框架,或者是使用开源的(例如dubbo),或者是自己基于某种协议(例如hessia ...

  3. SOA 实现:服务设计原则

    http://www.ibm.com/developerworks/cn/webservices/ws-soa-design/ 引言 面向服务的体系结构(Service-Oriented Archit ...

  4. 论SOA架构的几种主要开发方式

    转: http://blog.csdn.net/chenleixing/article/details/44926955  面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络 ...

  5. ERP_Oracle Erp发展趋势基于SOA电子商务方案

    2014-01-12 Created By BaoXinjian

  6. 解决JDeveloper运行慢的设置/BPM/SOA Server JVM参数设定

    最近在使用 Jdeveloper 10.1.3.3 版本时发现速度奇慢无比,后经Google,发现如下解决方案:在 jdev.conf 文件的末尾加上如下两行,速度即可得到显着的提高, jdev.co ...

  7. 论SOA架构的几种主要开发方式【转】

           面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署.组合和使用.服务层是SOA的基础,可以直接被应用调用,从而有效控制系 ...

  8. 了解SOA是什么!

    面向服务架构 面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来 ...

  9. 浅析深究什么是SOA?(转)

    http://blog.vsharing.com/fengjicheng/A1059842.html 阅读提示: 本文探讨SOA概念背后的核心内涵,如何将SOA落地的实务方法. 金蝶中间件作为全球领先 ...

随机推荐

  1. C# 实现HTML5服务器推送事件

    为什么需要服务器推送事件: 因为如果需要保持前台数据的实时更新例如,IM聊天,股票信息, 1.可以在客户端不断地调用服务端的方法来获得新数据,但是这样会很消耗服务器资源,导致系统变慢! 2 html5 ...

  2. xml直接读取节点

    <root> <books> <book id="one"></book> <book id="two"& ...

  3. c#的协变和逆变

    关于协变和逆变要从面向对象继承说起.继承关系是指子类和父类之间的关系:子类从父类继承,所以子类的实例也就是父类的实例.比如说Animal是父类,Dog是从Animal继承的子类:如果一个对象的类型是D ...

  4. tomcat源码解读(2)–容器责任链模式的实现

    责任链模式:责任链模式可以用在这样的场景,当一个request过来的时候,需要对这个request做一系列的加工,使用责任链模式可以使每个加工组件化,减少耦合.也可以使用在当一个request过来的时 ...

  5. 51nod1417 天堂里的游戏

    ---恢复内容开始--- 1417 天堂里的游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 多年后,每当Noder看到吉普赛人,就会想起那个遥 ...

  6. linux系统文件属性及企业精典故障案例

    linux系统文件属性: [root@nginx_back ~]# stat keepalived-1.2.7.tar.gz 查看文件属性 File: "keepalived-1.2.7.t ...

  7. vs2010配备boost编程环境

    vs2010配备boost编程环境 vs2010配置boost编程环境 第一步:下载boost,我下载的方法是从http://www.boost.org/上找最新的下载.名字叫boost_1_53_0 ...

  8. fedora 解决yumBackend.py进程CPU占用过高

    fedora启动时电脑风扇噪声巨响,检查进行发现是yumBackend.py进行占用CPU过高. yumBackend.py进行是后台检查更新,如果觉得没用可以使用工具关闭检查更新,或者修改检查周期. ...

  9. 提取图像(tif)中水体的矢量数据(shp)研究

    方法一:1、利用envi打开tif数据,原投影信息为beijing54.envi中没有这个投影。这里选择投影信息(WGS-84)选取水体roi——进行监督分类。这里可以对分类后进行处理(消除文字等干扰 ...

  10. Nginx upstream的5种权重分配方式

    .轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,后端服务器down掉,能自动剔除 .weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况. upstre ...