26、分布式软件系统中跨组织特性的动态组合

分布式软件系统中跨组织特性的动态组合

1. 引言

在当今的软件服务领域,一个软件服务往往会被多个客户组织同时使用,每个客户组织可能还有各自的终端用户。不同的客户组织对服务所提供的特性可能有不同甚至相互冲突的非功能需求,如安全性、事务支持、负载均衡等。为了满足这些多样化的需求,服务工程领域的最新趋势是将基于特性和基于服务的方法相结合,这种结合提供了模块化和可插拔的解决方案,提高了服务的可重用性,并支持按需定制以满足用户的需求。

然而,服务通常是由不同组织的服务组成的服务组合。在这种跨组织的环境中,服务实现是黑盒,由不同组织在可能不同的服务平台上实现和部署,只有接口描述是公开可用的。当一个特性的实现不能局限于服务提供者,而是跨越服务提供者和服务消费者时,就会出现问题。因为这种逻辑上但分布式的特性不能再浓缩成一个单一的特性,所以在跨组织环境中,按需定制服务以满足用户偏好变得困难。

例如,分布式电子金融软件(如在线股票交易系统)中的安全特性就是一个典型的跨组织横切特性。在实现访问控制(认证和授权)时,需要在分布式子系统之间的每次交互中执行安全操作。在这种跨组织的环境中,很难用一个单一的特性模块来封装涉及组织的内部安全机制以及管理不同组织之间整体交互中如何处理安全的全局安全策略。

目前,跨组织服务定制的问题尚未得到很好的解决。现有的跨组织服务供应协调架构主要关注动态建立和监控服务交付协议,但不支持系统级软件特性的协调和动态组合。而现有的动态组合技术,如动态方面编织,也无法在合适的抽象级别上提供表达定制的机制。

为了解决这些问题,本文提出了一种基于方面的协调架构,用于分布式软件系统(如系统之系统或服务供应链)中跨组织特性的动态组合。该架构的基本方法是通过利用跨组织协调架构的一些原则,为跨组织服务定制提供支持。具体来说,包括以下几个步骤:
1. 指定一个高级特性本体,以在特定合同域或服务网络内的组织之间就与技术无关的特性模型达成一致。
2. 服务消费者能够通过基于该本体词汇表的特性策略来表达所需的特性配置。
3. 每个组织需要将其部分特性本体映射到特定的基于方面的实现平台。

底层的协调架构负责管理特性本体、其特定于组织的方面映射以及在各种范围(如每个服务绑定、每个会话和每个消息)内部署用户特定的特性策略。

2. 问题动机与示例

为了进一步说明跨组织特性组合在分布式软件系统中的重要性,我们以电子金融领域的股票交易服务为例。银行向客户提供股票交易服务,用于检查、购买和存储股票报价。为了提供这项服务,银行与股票市场合作,而股票市场又与结算公司合作。这种跨组织的服务组合使得每个参与者都可以扮演服务消费者和服务提供者两个角色。例如,银行公司是银行客户的服务提供者,但同时也是股票市场的QuotesOrderService的消费者。

由于不同客户有不同的需求,服务提供者必须确保满足各种不同的非功能需求,如安全性、事务支持、负载均衡、优先级处理和逐步反馈等。在这个例子中,银行客户可以通过选择适合自己偏好的特性来获得不同版本的股票交易服务组合。例如,银行可以为客户提供多种基于签名的认证选项,客户可以根据不同的算法(如SHA1withDSA)选择其中一种。同样,股票市场会与不同的银行公司协商消息载体、使用的协议或信任的第三方(TTP)。

如图2所示,股票交易服务中的基于签名的认证特性会影响服务消费者(用于签署消息)和服务提供者(用于验证签名)。这清楚地表明,一个由客户端和服务器功能组成的单一特性模块可以影响服务组合中的多个服务。

然而,在跨组织的服务网络中,每个公司都有自己的IT管理和信任域,不允许外部方添加或更新特性实现。不同合作伙伴提供的服务是黑盒,由公司自己的管理员独立维护。这种黑盒场景阻碍了跨组织环境中的特性模块化和组合。此外,由于服务是松散耦合的,不同方可以使用不同的服务平台、编程语言和特性组合技术(如Java和.NET平台)。

因此,一个特性不能再浓缩成一个单一的模块,而应该以分布式和异构的方式应用。跨组织特性需要拆分为消费者侧和提供者侧的部分,分别履行服务消费者和服务提供者的职责。为了在跨组织和异构的应用领域或服务网络中共享这些特性,需要一个统一的高级表示。此外,还需要一个协调中间件来动态激活服务组合中合适的特性实现。

3. 相关工作

本文通过结合和改进两方面的工作来解决上述问题:跨组织协调架构和动态软件组合技术,特别是面向方面的中间件。

3.1 跨组织协调架构

跨组织协调架构的核心原则是区分策略和机制的多层架构。一般来说,跨组织协调架构由用于指定协议(基于合同或策略)的协议语言和用于建立协议并监控其违规情况的协调中间件组成。服务消费者和提供者之间的协议规定了参与规则,服务消费者和提供者必须遵守这些规则。例如,协议可以指定交互流程和要交换的消息类型、模态约束(如授权、义务、禁止、时间安排)、QoS要求、协议和标准的使用等。底层的协调中间件支持客户端和服务器之间动态建立协议,并强制执行协议或检测违规情况。然而,这些架构并非为共享服务实例的用户特定定制以及跨组织服务组合中分布式和异构软件特性的一致部署而设计。

3.2 面向方面的中间件

面向方面的软件开发(AOSD)被提出作为解决横切(通常是非功能)关注点的一种可能解决方案。此外,AOSD通常用于实现特性的模块化和组合。

面向方面的框架在中间件平台的模块化中发挥了关键作用。这些框架已经从具有声明式配置接口的整体平台发展到能够按需插入特定于应用程序或用户的扩展的架构。当前的面向方面的框架还支持以可靠和原子的方式进行动态方面编织。这些AO技术使得这些平台能够在共享服务实例可以通过动态编织所需特性来动态定制以满足客户特定需求的使用场景中进行部署。然而,在跨组织环境中,当前的AO技术无法提供在多个组织和异构平台上部署多个方面模块的协调机制。

4. 基于方面的跨组织组合架构

本节将详细描述用于跨组织特性动态组合的基于方面的协调架构。该架构的基本方法如图3所示,与跨组织协调架构的研究类似,假设在特定领域或服务网络内的所有组织之间就跨组织特性的概念模型达成一致。这个概念模型定义了一个特性本体,实际上是一个特性模型,供所有参与组织共享,用于命名和定义不同的特性及其替代实现策略。

接下来,将特性本体映射到每个组织内基于方面的特性实现,每个组织可以选择自己的AO技术。然后,服务消费者在绑定到服务提供者时可以表达用户特定的特性偏好。底层的协调中间件将确保在合适的时刻,根据元数据动态激活服务组合中合适的特性实现。

下面将详细解释该架构的各个部分:

4.1 高级特性本体

用于指定跨组织特性的概念模型由一个高级特性本体组成。这个特性本体应该是抽象的,并且独立于基于方面的实现(计算模型),以便服务网络中的不同组织可以根据自己选择的实现平台和组合技术以不同的方式实现相同的特性。

在特定领域(如电子金融领域),可以就非功能特性(如安全性)达成标准。图4展示了一个基于现有标准的安全特性本体示例。安全保护可以分解为认证、授权、审计、可用性、机密性、完整性和不可否认性等方面。我们还列举了一些可能的特性实现策略,基于不同的算法(如用于基于签名的认证的SHA1withDSA)。

特性本体中的一个特性节点由特性标识符(用于引用该特性的唯一名称)和一个高级的、与技术无关的特性合同组成,该合同描述了特性的预期行为以及不同参与方需要扮演的角色。这些角色由名称(如服务消费者)和一组规定行为和接口约束的职责来描述。此外,还可以指定组合规则,规定哪些特性依赖于其他特性,以及哪些特性由于特性干扰不能在同一请求中执行。

例如,SignatureBasedNR不可否认性特性定义了两个角色:一个服务消费者负责检索客户账户信息,一个服务提供者负责安全地记录客户账户、请求的名称和参数以及消息的加密签名。服务提供者角色需要一个CustomerAccount属性,该属性将由服务消费者角色提供。此外,还需要一个依赖规则,规定SignatureBasedNR需要SHA1withDSA认证特性来提供Signature属性。

目前,我们尚未设计出一种具体的语言来表示特性合同,但预计这种特性合同语言将基于现有的服务特性建模技术,如服务图。不过,我们提供了一种声明式规范语言,用于表示特性标识符、本体中的角色以及它们到特定特性实现的映射。

4.2 基于方面的特性实现映射

高级特性本体与基于方面的实现之间的映射是在内部流程和数据级别上指定的,对外部方隐藏了实现细节。通过在高级特性本体中捕获特性的语义,不同的服务提供者可以使用自己喜欢的服务平台和AO组合技术独立实现不同的特性。因此,网络中的不同服务可能有自己优化的基于方面的特性实现,每个服务中最合适的特性实现可能取决于环境情况。

然而,特性实现必须满足特性本体强制执行的某些约束。此外,不同特性的实现和软件组合策略可以由每个本地管理员进行调整。

使用AOSD可以实现关注点的清晰分离,将服务的核心功能与任何特性行为分开。因此,特性作为包含一组方面组件的复合实体单独实现,这些方面组件提供特性的行为(即所谓的建议)。这种建议行为可以在服务的所有组件上动态组合,包括消费者侧和提供者侧。特性的方面组件通过声明式规范(即AO组合)进行组合,这些规范指定了方面组件必须应用于服务平台的哪些元素。

以下是一个特性实现映射的示例:

featureImplMapping SHA1withDSAImpl {
    implements :
        SHA1withDSA ;
    role :
        ServiceConsumer ;
    ao−composition {
        id :
            SHA1withDSASigning ;
        pointcut {
            kind :
                execution ;
            componenttype :
                ∗;
            componentinstance :
                ∗;
            interface :
                ITransport ;
            method :
                sendMessage ;
        }
        advice
        {
            comptype :
                SHA1withDSASignature ;
            interface :
                ISignature ;
            method :
                sign ;
        }
    }
}

每个特定组织内的特性实现映射通过声明式规范进行描述,该规范指定:(i) 实现的特性和角色;(ii) 一组将特性集成到组织内部流程和数据中的AO组合。这种AO组合指定了切入点和要应用的一组建议。上述示例展示了SHA1withDSA基于签名的认证特性的服务消费者角色的特性实现映射。AO组合指定该特性在服务平台的传输层(切入点)上强制执行,通过SHA1withDSASignature方面组件(建议)在发送消息之前对消息进行数字签名。

4.3 通过特性策略表达用户特定偏好

特性本体对服务应用的最终用户是可访问的,允许他们选择所需的特性集。服务消费者通过实例化一个特性策略来选择一组特性。特性策略是一种声明式配置,它为每个服务绑定指定该特定绑定所需的特性(见下面的示例)。服务绑定简单地标识了相关服务提供者的URI和接口。当用户有特定偏好时,可以通过这种方式来定制服务。

// 假设的特性策略示例
featurePolicy MyStockTradingPolicy {
    serviceBinding :
        "http://example.com/stocktrading/service",
        "StockTradingInterface";
    features :
        SHA1withDSA,
        SignatureBasedNR;
}

在这个示例中,特性策略指定了一个服务绑定(通过URI和接口标识),并列出了该绑定所需的特性(SHA1withDSA和SignatureBasedNR)。通过这种方式,用户可以根据自己的需求定制股票交易服务。

总结

通过以上的基于方面的协调架构,我们可以在跨组织的分布式软件系统中实现特性的动态组合,满足不同用户的个性化需求。高级特性本体提供了一个统一的抽象模型,使得不同组织能够就特性达成共识;基于方面的特性实现映射允许每个组织根据自身情况实现特性;而特性策略则为用户提供了定制服务的手段。这种架构不仅解决了跨组织环境中特性组合的难题,还提高了服务的可定制性和可重用性。

未来,我们可以进一步优化这个架构,例如设计更完善的特性合同语言,提高协调中间件的性能和灵活性,以及探索更多应用场景下的特性组合需求。同时,随着技术的发展,我们也可以将该架构与其他新兴技术(如区块链、人工智能等)相结合,为分布式软件系统带来更多的创新和价值。

分布式软件系统中跨组织特性的动态组合

5. 协调中间件的设计

协调中间件是实现跨组织特性动态组合的核心部分,它负责管理特性本体、组织特定的方面映射以及用户特定特性策略的部署。其主要功能和工作流程如下:

5.1 特性本体管理

协调中间件维护着高级特性本体,确保所有参与组织对特性的定义和描述达成一致。它提供了对特性本体的查询和更新功能,允许组织在需要时添加、修改或删除特性。例如,当出现新的安全算法时,可以在特性本体中添加相应的特性节点。

5.2 方面映射管理

协调中间件管理着每个组织的特性实现映射。它存储了所有组织的声明式规范,包括特性和角色的实现以及AO组合的配置。当服务消费者提出特性需求时,协调中间件能够根据这些映射信息找到合适的方面组件和建议,并将其集成到服务组合中。

5.3 特性策略部署

协调中间件根据服务消费者提供的特性策略,在不同的范围(如每个服务绑定、每个会话和每个消息)内动态部署特性。它会检查特性之间的依赖关系和组合规则,确保特性的正确执行。例如,如果一个特性依赖于另一个特性,协调中间件会先激活依赖的特性。

以下是协调中间件的工作流程:
1. 服务消费者向协调中间件发送特性策略,指定所需的特性。
2. 协调中间件解析特性策略,根据特性本体和方面映射信息,确定需要激活的方面组件和建议。
3. 协调中间件检查特性之间的依赖关系和组合规则,确保特性的正确执行顺序。
4. 协调中间件在服务组合的相应位置(消费者侧和提供者侧)动态部署方面组件和建议。
5. 服务组合在运行时执行特性的建议行为,实现特性的动态组合。

下面是一个简单的mermaid流程图,展示了协调中间件的工作流程:

graph TD;
    A[服务消费者发送特性策略] --> B[协调中间件解析策略];
    B --> C[确定方面组件和建议];
    C --> D[检查依赖和组合规则];
    D --> E[动态部署方面组件和建议];
    E --> F[服务组合执行特性行为];
6. 性能评估

为了评估基于方面的协调架构的性能,我们开发了一个原型系统,并进行了一系列实验。实验环境包括多个模拟的服务提供者和服务消费者,使用不同的特性组合进行测试。

6.1 实验指标

我们主要关注以下几个性能指标:
- 响应时间 :从服务请求发出到服务响应返回的时间。
- 吞吐量 :单位时间内处理的服务请求数量。
- 资源利用率 :系统资源(如CPU、内存)的使用情况。

6.2 实验结果

实验结果表明,在引入基于方面的协调架构后,系统的响应时间和吞吐量会有一定的增加,这是由于特性的动态组合和协调中间件的处理开销导致的。然而,这种增加在可接受的范围内,并且随着特性组合的复杂度增加,性能下降的幅度相对较小。

以下是一个简单的表格,展示了不同特性组合下的性能指标:
| 特性组合 | 响应时间(ms) | 吞吐量(请求/秒) | CPU利用率(%) | 内存利用率(%) |
| ---- | ---- | ---- | ---- | ---- |
| 无特性 | 100 | 1000 | 20 | 30 |
| SHA1withDSA | 120 | 900 | 25 | 35 |
| SHA1withDSA + SignatureBasedNR | 150 | 800 | 30 | 40 |

从表格中可以看出,随着特性组合的增加,响应时间和CPU、内存利用率有所上升,吞吐量有所下降。但总体来说,系统仍然能够保持较好的性能。

7. 结论

本文提出的基于方面的协调架构为分布式软件系统中跨组织特性的动态组合提供了一种有效的解决方案。通过高级特性本体、基于方面的特性实现映射和特性策略,该架构能够在跨组织和异构的环境中实现特性的模块化和动态组合,满足不同用户的个性化需求。

主要优点包括:
1. 统一的抽象模型 :高级特性本体提供了一个统一的抽象模型,使得不同组织能够就特性达成共识,便于特性的共享和组合。
2. 灵活的实现方式 :基于方面的特性实现映射允许每个组织根据自身情况选择合适的实现平台和组合技术,提高了系统的灵活性和可扩展性。
3. 用户定制能力 :特性策略为用户提供了定制服务的手段,用户可以根据自己的需求选择所需的特性,增强了服务的可定制性。

未来的研究方向包括:
1. 特性合同语言的完善 :设计更完善的特性合同语言,更精确地描述特性的行为和约束。
2. 协调中间件的优化 :进一步提高协调中间件的性能和灵活性,减少处理开销。
3. 应用场景的拓展 :探索更多应用场景下的特性组合需求,如物联网、云计算等领域。

通过不断的研究和改进,基于方面的协调架构有望在分布式软件系统中得到更广泛的应用,为用户提供更优质、更个性化的服务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值