中南大学SOA服务组合技术
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
077 <sequence> 5 服务组合技术 078 <invoke partnerLink="invoicing" 079 portType="lns:computePricePT" 080 operation="initiatePriceCalculation" 081 inputVariable="PO"> 082 </invoke> 083 <invoke partnerLink="invoicing" 084 portType="lns:computePricePT" 085 operation="sendShippingPrice" 086 inputVariable="shippingInfo"> 087 <target linkName="ship-to-invoice"/> 088 </invoke> 089 <receive partnerLink="invoicing" 090 portType="lns:invoiceCallbackPT" 091 operation="sendInvoice" 092 variable="Invoice"/> 093 </sequence> 094 <sequence> 095 <invoke partnerLink="scheduling" 096 portType="lns:schedulingPT" 097 operation="requestProductionScheduling" 098 inputVariable="PO"> 099 </invoke> 100 <invoke partnerLink="scheduling" 101 portType="lns:schedulingPT" 102 operation="sendShippingSchedule" 103 inputVariable="shippingSchedule"> 104 <target linkName="ship-to-scheduling"/> 105 </invoke> 106 </sequence> 107 </flow> 108 <reply partnerLink="purchasing" 109 portType="lns:purchaseOrderPT" 110 operation="sendPurchaseOrder" 111 variable="Invoice"/> 112 </sequence> 113 </process>
服务组合方法
5 服务组合技术
SOA的哲理:集成
集成 (Integration)
尽可能的集成 (Integration as far as possible)
尽可能灵活的集成 (Integration as flexibly as possible) 将小粒度服务集成为大粒度服务 (compose fine-grained services into coarse-grained service) 将硬编码的集成变为动态可配置的集成 (transform hard-coded integration into dynamically reconfigurable integration)
5 服务组合技术
BPEL的一个例子
<variable>
Discount Service BPEL Flow
<process>
10:00am
start
Get Discount
<faultHandlers> <invoke> Credit Exception <flow>
Handle Negative
5 服务组合技术
SOA中的Orchestration:服务编排/服务组合
5 服务组合技术
服务编排/组合的一个例子
SAP
Mainframe
Check Inventory Submit Order Transform Order/ Customer Determine Discount Check Credit Can Fulfill?
Receive notification
5 服务组合技术
服务编排的描述方法:BPEL(4WS)
针对orchestration,出现了大量的服务协同建模标准,最典型的莫过 于BPEL和BPEL4WS,在实践中得到了广泛的应用。
BPEL: Business Process Execution Language BPEL4WS: BPEL for Web Services
需要有一个中心控制引擎,负责调用各个离散的服务
5 服务组合技术
示例:Oracle的BPEL执行引擎
Oracle JDeveloper BPEL Designer
5 服务组合技术
服务编排的运行模式(1):集中式的执行引擎
Centralized Service Orchestration
5 服务组合技术
服务编排的执行过程
Content Package Setvice
QTI Service Sequencing Service
Web Service Orchestration Engine
5 服务组合技术
BPEL的基本结构
过程中的基本功能单元:活动<activity>
活动之间的次序关系:
先后次序<sequence> 多分支<switch> 循环<while> 并发与同步<flow> 非确定性选择<pick>
过程的相关数据:容器<container> 错误处理机制:<catching>、<handling faults> 补偿机制:<compensation handler>
<partnerLink>
</flow> <switch> </process>
? Determine if Can Fulfill
end
03:00pm
BPEL的一个例子
001 <process name="purchaseOrderProcess" 002 targetNamespace="..." 003 xmlns="..." 004 xmlns:lns="..."> ... 044 <sequence> 045 <receive partnerLink="purchasing" 046 portType="lns:purchaseOrderPT" 047 operation="sendPurchaseOrder" 048 variable="PO"> 049 </receive> 050 <flow> 051 <links> 052 <link name="ship-to-invoice"/> 053 <link name="ship-to-scheduling"/> 054 </links> 055 <sequence> 056 <assign> 057 <copy> 058 <from variable="PO" part="customerInfo"/> 059 <to variable="shippingRequest" 060 part="customerInfo"/> 061 </copy> 062 </assign> 063 <invoke partnerLink="shipping" 064 portType="lns:shippingPT" 065 operation="requestShipping" 066 inputVariable="shippingRequest" 067 outputVariable="shippingInfo"> 068 <source linkName="ship-to-invoice"/> 069 </invoke> 070 <receive partnerLink="shipping" 071 portType="lns:shippingCallbackPT" 072 operation="sendSchedule" 073 variable="shippingSchedule"> 074 <source linkName="ship-to-scheduling"/> 075 </receive> 076 </sequence>
<partnerLink>
Credit Service
Send Credit Application
Send Inventory Request
<invoke> <receive>
Inventory Service
<partnerLink>
Receive Credit Result
Receive Inventor来自百度文库 Result
这是SOA的优势所在,也是我们追求的目标所在
5.1 服务组合 (Service Composition)
5 服务组合技术
集成的方法:Composition vs Hard-coding
5 服务组合技术
服务组合(service composition)
独立存在的服务具有较低的价值,只有多方提供的多个服务集成在一 起,通过协同来完成共同的业务目标,服务和SOA才能体现出其优势。
5 服务组合技术
SOA中的Orchestration:服务编排/服务组合
Orchestration:将多个小粒度的Web服务按照特定的业务逻辑规则 构造为一个可执行的业务过程,同时又可以看作是一个大粒度的复合 Web服务。
执行时需要有中心控制机制; 由一个组织所拥有;
侧重点:如何使用已有的服务来构造新的服务。 Composition ≈ Orchestration
面向服务的体系结构(SOA)
5 服务组合技术
2018年1月9日
5 服务组合技术
主要内容
服务组合(Service Composition)
服务编排(Service Orchestration)
服务协同(Service Choreography) 编排 vs 协同
服务组合中的协调问题(Service Coordination)
单个Web服务的功能或/和性能有限,难以满足一些业务应用的需求,从而 需要解决服务组合问题。 服务组合(Service Composition)是将已有服务组合为一个新服务的过程,以 增加服务的可复用性、功能和性能。
5 服务组合技术
案例:“开设银行账户”
5 服务组合技术
服务组合的两大概念
SOA中提出了两个概念:orchestration和choreography
面向Web服务的过程建模语言; 由IBM、Microsoft和BEA共同提出;
BPEL能够实现基于WSDL的Web Services之间的流程编排和服务协 同,它提供了一种XML注释和语义,用于指定对Web Services进行 编排并确定Web服务之间的业务流程,实现Web Services之间的协 同。
Send „No Supplier“ Failure Check Liquidity
Evaluate result
Customer solvent
Send „No Liquidity“ Failure Cause Delivery Cause money transfer
Send success notification
前者定义了如何将小粒度的服务按照特定的流程聚合为大粒度的服务;
后者则定义了如何在多方的业务流程之间通过服务实现协同的动作编排。
二者的本质上都是用来规划服务之间的协同。
5.2 Service Orchestration 服务编排
5 服务组合技术
Orchestration
Orchestration的本意是“为管弦乐谱曲”:使用五线谱所提供的基 本音符,构造一首完整的乐曲。
Formulate Fulfillment Offer Send Result to User Formulate Rejection
Portal
Java
Web App
5 服务组合技术
示例:“订单管理”的服务流程
Customer „Order Service“
Input Order data
Search supplier No supplier