16、MAMS服务框架:原理、技术与应用

MAMS服务框架:原理、技术与应用

1. MAMS中的服务

在MAMS框架中,存在两种不同概念的服务。
- 基本服务 :是用户生成服务编排建模的基本构建块,通常等同于Web服务操作,提供单一、易于理解且可在各种上下文中应用的功能。基本服务涵盖领域特定服务(如处理健康相关数据)、技术特定服务(如IMS功能)和通用服务(如用户管理或持久化)。为确保不同基本服务协同工作,需为开发者提供详细的行为和描述说明。
- 服务组合 :由服务提供者(非IT专家)将基本服务组合而成,形成新的应用程序。服务创建过程如下:
1. 使用图形化的服务描述语言(SDL),这是一种面向数据流的建模语言,非IT专家可用于服务组合。
2. 从SDL生成基于BPEL的中间模型,用于存储服务组合并确保与其他技术的兼容性。
3. 将中间模型转换为声明式形式语言(DFL),由代理解释,包含基于本体的声明式服务描述,可应用推理和服务匹配。

MAMS语言栈由以下三部分组成:
- 图形化服务描述语言(SDL):用于非IT专家进行服务组合的数据流建模语言。
- 基于BPEL的中间模型:用于存储服务组合,可转换为其他执行语言或框架,确保兼容性。
- 声明式形式语言(DFL):由代理解释,包含基于本体的服务描述,支持推理和服务匹配。

中间模型可在提供适当Web服务时由普通BPEL引擎执行,且每个基本服务都有OWL - S描述。在DFL中,可将WSDL调用替换为对OWL - S描述的抽象调用。代理能够对服务组合应用推理和服务匹配,优化服务执行。例如,组合中可能只有对抽象“消息服务”的调用,代理可根据用户可用地址或偏好决定使用SMS或电子邮件等机制传递消息。若基本服务缺失或失败,代理可寻找类似服务,提高服务组合执行的健壮性。

2. MAMS中的代理技术

MAMS项目利用代理技术实现开放分布式服务交付平台(ODSDP),作为服务集成和执行层。该核心平台连接网络抽象提供的服务、平台自身的基本服务以及服务提供者创建的组合服务。选择面向代理的技术有以下优势:
- 代理作为服务提供实体,封装代码、数据和服务及其提供者的身份,便于将不同服务提供者的服务映射到平台上的代理。
- 代理通信机制基于消息总线,与网络抽象,支持服务的灵活管理和分布式部署。
- 可配置的代理Bean允许将不同服务插入代理,方便扩展或更改代理的服务和功能。
- 代理可在运行时添加、删除和检测,支持功能的动态扩展或缩减。

ODSDP的基本结构由多个代理节点组成,每个节点包含多个代理,代理包含基本功能和可配置的代理Bean。代理Bean是专业服务开发者实现基本服务等功能的具体层面。这种结构确保了ODSDP的稳定性和可扩展性。

代理技术在服务执行环境中有重要功能,如自适应行为。代理能够寻找、使用新服务替代临时不可用或不可用的服务,设计并应用了处理动态负载平衡机制和自我修复功能的自适应代理行为。平台采用自适应负载平衡方法,应用两种基本负载平衡策略。

3. 服务执行框架

ODSDP是MAMS框架的基于代理的服务执行环境,由任意数量的代理节点通过基于Java消息服务(JMS)的消息代理连接,实现服务的组织和物理分布。除消息代理和基于Java管理扩展(JMX)的管理接口外,可选的代理节点组件可提供基础设施功能,如分布式服务目录,支持点对点的服务公告和搜索,可激活缓存机制加速全局搜索。基本服务和组合的最终用户服务均由代理提供,可在运行时通过管理接口部署在代理节点上。

以下是MAMS服务执行框架的流程图:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(服务用户):::process -->|使用服务| B(ODSDP):::process
    B -->|包含| C(代理节点):::process
    C -->|包含| D(代理):::process
    D -->|提供| E(基本服务):::process
    D -->|提供| F(服务组合):::process
    G(服务提供者):::process -->|创建服务组合| F
    G -->|提供基本服务| E
    H(SDL):::process -->|生成| I(基于BPEL的中间模型):::process
    I -->|转换| J(DFL):::process
    J -->|解释| D
4. 代理架构

MAMS代理基于组件架构,包含两个标准组件:
- 内存:用于存储代理的本地知识。
- 执行周期:控制代理的行为。

此外,代理通常包含多个可选组件,如通信组件、服务目录访问组件、服务匹配器访问组件、服务提供组件和解释服务组合的解释器。组件之间通过内存交互,遵循黑板隐喻。

以下是代理架构的主要组件及功能:
| 组件 | 功能 |
| ---- | ---- |
| 适配器 | 一个代理可能有多个适配器,可提供服务列表,使用传感器/执行器模型实现,用于集成不同技术。适配器在启动时或之后向代理注册服务,可提供完整的OWL - S描述或输入/输出规范,最终的OWL - S描述会在服务目录中注册。 |
| 服务匹配器 | 代理节点的专用组件,代理可提交服务模板进行匹配,匹配过程可处理不同详细程度的服务描述,从简单的名称和输入/输出匹配到语义OWL - S匹配。 |
| 服务调用 | 当代理调用服务时,若服务由自身提供,可直接调用注册该服务的适配器;若由其他代理提供,代理根据服务匹配结果选择最佳匹配服务,通过JMS系统向提供者代理发送调用消息。若调用失败,代理会尝试调用匹配列表中的下一个服务。 |
| 解释器 | 是一种特殊的适配器,能够解释用DFL表示的服务组合。它将服务组合注册为动作,响应服务调用,像简单的状态机一样逐步处理服务组合,执行DFL命令,必要时使用服务匹配器和通信调用其他服务。 |

5. 使用DFL进行服务组合

服务组合语言基于JIAC代理描述语言(JADL),结合本体数据结构和面向服务的编程。DFL是MAMS特定的JADL++子集,使用更现代的技术实现相同目标。

DFL的声明部分完全基于OWL,包括用于服务描述的OWL - S,可利用现有的推理和服务匹配实现。脚本语言的新特性是抽象服务调用,服务组合中的每个基本服务调用由服务模板表示,该模板可能是不完整的OWL - S描述。这种方法既适用于精确服务调用,也适用于目标驱动的方法。

DFL的抽象语法如下:

<Script>
= <Decl> |
<Skip> |
<Assign> |
<Seq> | <Par> | <Protect> |
<Write> | <Read> | <Remove>
<IfThenElse> | <Loop>
<Invoke> |
<Send>
<Decl>
= var x: Type
<Assign>
= x := <Expr>
<Seq>
= <Script> ; <Script>
<Par>
= <Script> || <Script>
<Protect>
= protect <Script>
<Write>
= write <Expr>
<Read>
= read <Expr> x
<Remove>
= remove <Expr> x
<IfThenElse>
= if b then <Script>
else <Script>
<Loop>
= while b do <Script>
<Invoke>
= invoke name in: [x] out: [y]
pre: [A] post: [B] (nonFunc)*
<Send>
= send addr <Expr>

使用解释性脚本语言的优势在于可完全控制服务组合的执行,可在任何点停止和恢复执行。每个服务组合部署在自己的代理中,增强了ODSDP的监控和管理能力。

6. 代理节点功能

代理节点负责管理代理和控制机器上的独特资源,如通信、数据库或Web服务器。以下是代理节点的主要功能:
- 服务目录 :是代理节点的必需组件,为本地代理提供对所有代理节点全局服务目录的访问。采用对等解决方案,代理节点通过多播协议宣传自己,必要时交换本地服务描述,无需中央数据库,确保服务描述列表始终最新。服务目录主要实现FIPA - DF规范中白页和黄页服务的操作,如代理和服务的注册/注销及搜索。
- 服务部署 :代理节点的管理接口允许在运行时部署新服务,有两种方式:
1. 提供适当的库和使用该库的代理配置,代理节点实例化代理,代理通过目录和通信设施注册并提供服务。
2. 使用DFL表示的服务组合,需使用包含相应解释器的标准代理配置,将服务组合作为配置参数添加到解释器。代理节点根据配置创建新代理,解释器在启动时注册服务组合。对于服务组合中引用的基本服务,解释器在调用时使用服务匹配器寻找最佳可用基本服务。
- 代理迁移 :代理可在不同代理节点之间迁移,当前实现为弱迁移,仅转移代码和数据,不转移代理及其组件的状态。迁移可用于管理目的或负载平衡,通过将代理的配置和库转移到目标代理节点,使用专门的服务部署方法实现。
- 代理持久化 :为避免服务提供者在代理节点关闭后手动重新部署服务,代理持久化实现允许将代理节点的运行时状态存储为配置文件。代理持久化的主要组件监控代理的添加、删除和重要属性更改,将更改应用到内存中的配置文件表示,在代理节点关闭时保存到磁盘。这种方法允许在重启代理节点时恢复相同的代理和服务。

综上所述,MAMS服务框架通过结合基本服务、服务组合、代理技术和先进的语言栈,提供了一个灵活、健壮且可扩展的服务执行环境,支持动态服务部署、自适应行为和高效的服务管理。

MAMS服务框架:原理、技术与应用

7. 服务匹配机制的深入剖析

服务匹配是MAMS框架中至关重要的一环,它确保了代理能够找到满足需求的服务。在MAMS中,服务匹配由代理节点的专用组件完成,代理可提交服务模板与服务目录中的所有已知服务进行匹配。

为了实现高效的服务匹配,我们构建了自己的OWL - S匹配器,它能够执行多步骤的匹配过程,具体如下:
1. 简单名称和输入/输出匹配 :首先检查服务名称以及输入输出参数是否匹配,这是最基础的匹配步骤,能快速筛选出一部分可能的服务。
2. 语义OWL - S匹配 :在简单匹配的基础上,进一步进行语义层面的匹配,考虑服务的语义信息,如服务的功能、前提条件和效果等,以找到更精确的匹配服务。

以下是服务匹配的流程图:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(代理):::process -->|提交服务模板| B(服务匹配器):::process
    B -->|与服务目录匹配| C(服务目录):::process
    C -->|返回匹配服务列表| B
    B -->|按匹配程度排序| D(排序后的匹配服务列表):::process
    A -->|获取排序后的列表| D
8. 服务调用的详细流程

服务调用是代理与服务交互的关键操作,在MAMS中,服务调用分为两种情况:
- 自身提供的服务 :当代理调用自身提供的服务时,可直接调用注册该服务的适配器,并等待结果返回。
- 其他代理提供的服务 :若服务由其他代理提供,代理会根据服务匹配器的结果,选择最佳匹配的服务(通常是匹配列表中的第一个服务),并通过JMS系统向提供者代理发送调用消息。调用协议类似于请求 - 回复协议,用户请求服务,提供者返回结果或失败消息。若调用失败,代理会尝试调用匹配列表中的下一个服务,直到调用成功或没有更多匹配服务为止。

以下是服务调用的详细步骤列表:
1. 代理发起服务调用请求。
2. 检查服务是否由自身提供:
- 若是,直接调用适配器并等待结果。
- 若否,进入下一步。
3. 获取服务匹配器的结果列表。
4. 选择最佳匹配服务。
5. 通过JMS系统向提供者代理发送调用消息。
6. 等待提供者代理的响应:
- 若成功,获取服务结果。
- 若失败,尝试调用匹配列表中的下一个服务,重复步骤5 - 6。

9. DFL服务组合的优势与应用场景

DFL服务组合语言具有诸多优势,使其在MAMS框架中发挥着重要作用。
- 基于本体的声明式描述 :DFL的声明部分完全基于OWL和OWL - S,这使得我们可以利用现有的推理和服务匹配实现,专注于将其集成到代理中。
- 抽象服务调用 :服务组合中的基本服务调用由服务模板表示,这种抽象化的方式既适用于精确服务调用,也适用于目标驱动的方法。例如,在一个服务组合中,我们可以使用抽象的“消息服务”调用,代理在运行时根据用户的可用地址和偏好选择合适的消息传递机制(如SMS或电子邮件)。
- 可控制的执行流程 :使用解释性脚本语言,我们可以完全控制服务组合的执行,可在任何点停止和恢复执行。每个服务组合部署在自己的代理中,增强了ODSDP的监控和管理能力。

以下是DFL服务组合的应用场景表格:
| 应用场景 | 描述 |
| ---- | ---- |
| 动态服务选择 | 在服务组合中使用抽象服务调用,代理根据运行时情况选择最佳服务。 |
| 服务容错 | 当某个服务失败时,代理可以通过服务匹配器寻找替代服务,确保服务组合的正常执行。 |
| 服务优化 | 利用推理和服务匹配,优化服务组合的执行路径,提高服务性能。 |

10. MAMS服务框架的未来展望

MAMS服务框架已经展现出了强大的功能和潜力,但仍有一些方面可以进一步改进和拓展。
- 增强代理的智能性 :未来可以进一步提升代理的自适应能力和智能决策能力,使其能够更好地应对复杂多变的服务环境。
- 拓展服务类型 :随着技术的发展,可以引入更多类型的服务,如物联网服务、人工智能服务等,丰富MAMS框架的应用场景。
- 加强安全机制 :在服务执行过程中,安全是至关重要的。未来可以加强MAMS框架的安全机制,保障服务的可靠性和数据的安全性。

总之,MAMS服务框架为构建灵活、高效的服务执行环境提供了一个优秀的解决方案,通过不断的改进和拓展,它将在未来的服务领域发挥更加重要的作用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值