详细剖析Oracle、SOA、OSB结构原理

Oracle-SOA-OSB功能分析

请点击此处输入图片描述

今天介绍下Oracle OSB的基础核心概念和核心功能分析,在前面两篇文章里面重点介绍了Oralce官方在线文档中的入门介绍和关键功能Task任务文档说明。今天篇核心原理介绍。对于OSB核心仍然是代理服务,业务服务和中间的业务处理管道三个部分的内容。

代理服务(Proxy Service)

包括了处理请求和可选的响应消息的消息处理逻辑,同时提供给外部消费方可以调用的接口。也就是说代理服务是OSB真正对外保留的接口服务能力。

业务服务(Business Service)

实际提供业务处理能力的服务,一个业务系统提供的一个业务处理Service服务就是一个业务服务。而在OSB的业务服务重点则是指将对外部业务服务的引用,外部遗留系统的适配最终映射到OSB上生成一个对应的提供业务能力的服务组件(Wraps the external systems the OSB calls)。

消息格式和内容转换(Messsage Transformation)

消息转换是OSB的一个重要内容,即不同的Inbound/Outbound消息格式之间能够相互进行转换。在OSB 12c当前可以提供三种方法进行消息转换,主要包括了:

Use XQuery, XSLT, and XPath

Use domain value maps (DVM)

Use cross reference tables

而实际上当前我们使用最多的仍然是XQuery+XSLT进行消息转换。在11g的时候更多的是使用XQuery+XPath代码的方式进行转换和映射,而在12c版本已经增加了XSLT的可视化数据映射能力,这是消息转换这块相对大的一个能力提升。但是采用 XSLT的时候会带来一定程度的性能损耗。对于主域值映射和交叉引用表实际在项目中使用的不算多,比如对于DVM还提供了基于Lookup动态映射功能,如果有相关需求场景可以考虑。

消息路由和动态路由(Routing and Dynamic Routing)

路由是OSB的另外一个重要功能,实际在OSB进行服务封装和设计的时候仍然是在Pipeline中进行设计和完成。

路由本身则是通过条件分支判断或者路由表来确定服务请求究竟路由到哪个业务服务上,对于用作路由判断的参数条件可以实际在SOAP Header中传递过来。

其次,动态路由功能也是一个场用的功能,即在设计Business Servie业务服务的时候,URI端点地址可以通过Routing Options action进行动态设置和指定。这样就避免了对于Extenal Servie业务服务都需要提前先设计多个Business Service服务进行映射。在进行服务动态路由的时候,外部多个服务需要遵循相同的WSDL服务契约标准格式。

消息增强和丰富(Message Enrichment)

在OSB中的Pipeline管道设计中,对于Action有三种类型:

1.Route Action: 路由操作(通过异步操作特性来防止现场阻塞)

2.Publish Action:发布操作 (发布操作是单向发送。它提供了调用外部服务的方法,但是没有收到响应)

3.Service Callout Action(在将请求路由到目标服务之前调用外部服务来丰富请求消息的能力)

对于消息的增强和丰富即是通过Service Callout Action操作来完成,即既可以在Proxy代理服务在接收到消息请求后先进行增强在转发和路由到业务服务,也可以是在得到了业务服务的返回后进行消息增强处理后再返回给服务消费方。

服务缓冲池(Service Pooling)

服务缓冲池更多的是在服务消费方和原始服务提供方之间增加更多的可靠性,可以通过服务池来提供高可用性和服务弹性扩展能力。同时在到目标源服务的网络连接出现短暂中断的时候,通过服务池提供的机制可以设置重试次数和重试时间,自动的发起重试操作。

同时可以通过服务缓冲池连接到多个提供通用能力的目标端业务服务,这个时候缓冲池能够提供相应的负载均衡能力,容错能力。当目标节点某个URI节点不能访问的时候可以自动进行故障隔离。同时对于负载均衡算法也支持轮询,随机等多种负载均衡算法选择。

服务结果集缓存(Service Result Cache)

对于只读服务调用可以启用服务结果集缓存,在企业结果集缓存的时候注意缓存失效时间的设置,可以使用默认值,也可以使用自己指定的缓存失效时间。

Oracle Service Bus支持服务缓存,通过完全图形化配置的方式,可轻松调整服务的缓存策略,无需进行代码编写,通过缓存能力,可大幅提升服务的响应效率,并降低数据库的业务查询压力。

流量控制(Work Manager and Message Trotting)

Message Trotting即OSB服务总线提供的消息节流特性,即在Proxy Service和Business Service之间增加了一个消息缓冲和排队区。我们可以设置最大允许的队列排队数,最大的并发线程数,以及消息的过期时间设置等。消息节流可以很好的起到对目标系统的缓冲作用,即即使出现消费方出现大并发的消息发送调用,我们通过节流和Queue队列仍然可以实现平滑的将服务请求推送的目标业务系统中。这有点类似我们在说传统的消息中间件的时候,当接收到大并发服务请求后的对下游的削峰能力。

对于Work Manager流量控制,在百度文库有《OSB-深度使用总结》可以详细参考,可以看到对于Message Trotting只是对消息的入口进行流控,而对于Work Manager则可以实现消息入和消息出的双向流量控制能力。基本的设置参数仍然是最小,最大的线程并发数,最大的请求排队数等指标。对于资源占比率设置则主要是调整多个服务大并发下的资源优先级分配策略。

拆分-合并(Split-Join)

使用拆分连接将大消息拆分为许多较小的消息,并并行处理它们,最后再将结果聚合成一个大型的响应消息。即OSB首先将接收到的大消息体按一定的规则拆分为多个子消息,然后再将子消息并行发送大目标系统,对于目标系统返回的多个子结果再进行join合并以返回一个完整的结果给消息发送方。

拆分-合并更多的是提升了消息发送和接收相应的性能。

遗留系统集成和适配能力

对于遗留系统的适配是OSB的一个核心能力,例如对于数据库的适配可以通过JCA Adapter适配器来完成,包括适配到数据库表和具体到对存储过程的适配能力。同时适配器还包括FTP,TCP Socket,FILE文件,JMS,AQ等各种消息和协议的适配。

对于Java EJB组件提供的方法也可以通过OSB提供的EJB Transport适配后将EJB组件中的方法暴露为一个SOAP WebService服务能力。

请点击此处输入图片描述

Oracle-SOA-OSB技术原理1

请点击此处输入图片描述

消息交换总线技术是为了实现企业数据共享和应用集成,提供一种基于企业服务总线(ESB)的信息共享交换

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

训练营资料福利官

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值