策略

在创建调解策略时,将 WSRR 用作策略编写点和将 WebSphere® DataPower® 用作策略执行点的实施详细信息。

WSRR 中的策略

WSRR 可以用于编写所有 SOA 策略,包括 SLA(服务级别协议)策略、调解策略、监控策略、定制策略和其他将在以后支持的策略域。使用业务空间用户界面,您可以在 WSRR 中创建、更新或删除策略文档。策略文档可以包含为特定策略域指定大量策略的策略表达式。或者,可以创建策略文档,以用于组装其他文档中的现有策略。可以使用策略标识来引用个别策略,在将策略添加到文档时可以指定策略标识。 策略表达式表示策略的声明,相当于 WS-Policy 文档中的 <wsp:Policy> 元素。

要在 Business Space 中创建调解策略,请参阅编写新策略

调解策略断言

服务级别协议 (SLA) 应来自于业务需求,即服务提供的服务质量必须满足指定标准。设计服务时,创建功能性需求以指导服务采用的逻辑。在该服务的分析和设计中,应同时指定非功能性需求,从而指定预计服务将提供的服务质量。例如,企业可能具有一项服务:提供信息以对客户互联网查询做出响应。目标是在 3 秒内返回响应。在端到端事务工程中,确定此服务必须在 2 秒内返回其信息,以便满足企业非功能性需求。

当未满足 SLA 时,我们可以编写将对服务性能实施运行时检查的策略,并采取操作,以便保障服务满足其 SLA。例如,我们可能具有一个通常能够在 2 秒内提供服务响应(95% 的情况)的服务主端点。SOA 架构设计师在另一台服务器上创建次要端点,这通常是针对主端点停运而用作热备用,但当主端点无法满足事务负载时,也可以被授权用于处理溢出流量。当必需满足 SLA 时,我们可以编写策略,用于检查服务响应时间和重新路由流量。

通过运行时策略维护 SLA 的另一个示例是,服务对具有各种消费者且每个消费者具有不同级别优先级的事务做出响应的情况。 例如,我们可能有“gold”和“bronze”客户,但只保障“gold”客户的特定服务质量。 在本示例中,我们可以检查客户是否为“gold”客户,然后重新路由至次要端点,而继续以较慢的响应速度处理“bronze”客户。企业决定,由于“bronze”客户不能提供足够的收入增长额,从而牺牲响应时间以满足“gold”客户的 SLA。

在第三个示例中,我们可能遇到一种情况,服务将尽其所能,但当它确定处于超负荷时,它将对低优先级客户服务的消息采取排队甚至拒绝措施。其中一个例子是,当客户请求的批处理例程突然占满系统。为了保证服务质量,我们可以创建仅在办公时间有效的运行时策略,在此期间将拒绝所有批处理请求。

通常,调解策略允许在提供给服务器(提供者)之前,验证和转换客户机(消费者)的入局消息。

策略支持此类消息验证和转换。 可以仅为提供者服务、特定消费者/提供者对或提供者服务的匿名消费者指定策略。针对匿名客户的策略提供一种用于定义缺省策略的方式,此缺省策略仅适用于未应用任何其他策略的消费者。使用此功能将为不标识自己的无赖消费者指定策略。这样此类消费者服务就可以拒绝其事务。这可以有助于防止充当消费者的黑客尝试使用事务占满系统以降低提供者服务质量的拒绝服务攻击。

调解策略条件

可以进行调解断言,这使运行时策略能够控制服务的 SLA、从消费者到提供者的消息转换,或验证消费者消息的消息模式。

SLA 策略条件(调解策略的特殊类型)实际上允许具有条件的典型 if-then-else 结构,然后根据条件求值情况来执行一组操作。指定条件为可选。如果未指定任何条件,那么它就相当于逻辑条件求值为 True,并将相应地执行任何指定的操作。

如果指定了条件,那么条件必须包含布尔表达式和/或调度规范。

调度

如果指定,那么调度标识策略生效时间。根据本地策略执行点对指定的日期和时间求值,使用的时区是该策略执行点的时区。如果未指定任何调度,那么策略在从策略编写点下载到策略执行点就开始执行,并一直继续。

调度可定义一个可选的开始日期和一个可选的停止日期、一个可选的每日期限以及一个可选的工作日列表。例如,可以定义调度有效期自 2012 年 10 月 1 日到 2012 年 10 月 30 日,在星期三和星期天从早上 8 点到下午 5 点。

可以指定的调度参数如下所示:
  • StartDate - 此可选属性指定了调度生效日期(xs:date 格式)。StartDate 包含在内,如果该属性不存在,那么调度将在今天立即有效。
    注: 单击 xs:date 超链接以了解此行业标准。
  • StopDate - 此可选属性指定调度停止有效的日期(xs:date 格式)。StopDate 不包含在内,并且所指定的日期应晚于开始日期。 当终止日期早于或等于开始日期时,调度将永远无效。如果该属性不存在,那么调度将永久有效。
  • Daily - 此可选元素指定调度有效的每日期限。如果该元素不存在,那么调度将全天有效。
    • StartTime – 如果指定 Daily,那么需要此属性。它指定调度每天开始的时间(采用 xs:time 格式)。(注:单击 xs:time 超链接以了解此行业标准)。
    • StopTime - 如果指定 Daily,那么需要此属性。它指定调度每天停止的时间(采用 xs:time 格式)。StopTime 不包含在内,并且所指定的时间早于或与每天开始时间相同,那么调度会在次日指定的停止时间停止。
  • Weekdays - 此可选元素指定调度中包含的每周天数。如果该元素不存在,那么调度中包含一周内的每一天。此元素仅影响日常时间表的开始,因为调度允许在午夜一直运行。例如,如果调度设置为在星期三晚上 11 点开始并运行 2 小时,那么调度实际上将在星期四凌晨 1 点结束。
    • Days - 如果指定了 Weekdays,那么需要此属性。它列出了调度中包含的工作日,名称列表之间用加号(“+”)隔开;例如,“Monday+Tuesday+Wednesday+Thursday+Friday+Saturday+Sunday”。

调解策略条件表达式

条件表达式是指定布尔表达式的非重复元素(如果指定)。

表达式包含三个必需的参数(Attribute、Operator 和 Value)以及一个可选的 Interval 和 Limit。如果对 Attribute 和 Value 应用 Operator 以及 Interval 和 Limit(适当情况下),求值为 True,那么表达式求值为 True。限制元素仅与 HighLow 和 TokenBucket 运算符一起使用。如果未指定,那么 Limit 的值为 0。如果未指定 Interval,那么缺省值为 60 秒。

指定的表达式参数如下:
  • 属性 - 下表概述了定义的属性及其类型。
    表 1. 定义的属性
    属性 描述和类型
    ErrorCount 此监视时间间隔期间检测到的故障数。
    MessageCount 监视时间间隔内拦截的实际消息数。
    InternalLatency 内部等待时间(处理时间,秒)。
    BackendLatency 设备到服务器等待时间(秒)。
    TotalLatency 后端和内部等待时间之和(秒)。
  • 运算符 - 下表概述了可用运算符及其含义:
    表 2. 运算符
    运算符 含义
    GreaterThan 一个简单的数字算法,当属性大于定义的值时,为 True。
    LessThan 一个简单的数字算法,当属性小于定义的值时,为 True。
    TokenBucket 一种基于速率并允许脉冲串传输的算法。 算法包含最大容量为限制令牌数的存储区。每个时间间隔之间以固定比率的值令牌填满存储区,而对于每个属性单元,除去令牌。当存储区中没有令牌时,该算法求值为 True,否则,求值为 False。这里有个示例可以帮助说明此算法:假设限制=100,值=5,时间间隔=1 秒,属性=MessageCount。
    1. 使用最大容量为 100 个令牌填满存储区。
    2. 当消息到达时,算法检查存储区是否包含任何令牌:
      1. 如果有,那么算法求值为 False,会从存储区中除去一个令牌。
      2. 如果没有,那么算法求值为 True。
    3. 同时,算法每秒钟会向存储区中添回 5 个令牌(如果空间允许)。
    HighLow 一个算法,当属性达到指定为值的高阈值时,求值为 True,在属性达到指定为限制的低阈值之前,继续求值为 True。
  • Value – 这是正整数元素。“0”有效。
  • Interval - 此可选元素定义用作滑动窗口的时间间隔,以在对表达式求值时度量 wsme:Attribute,格式为 xs:duration。如果未指定,那么使用的时间间隔为 60 秒。如果指定,应指定一个合理值,将配置的策略执行点功能考虑在内。即,值越高,策略执行点跟踪属性需要的内存越多。
    注: 单击 xs:duration 超链接以了解此行业标准
  • Limit - 此可选整数元素定义当 wsme:Operator 为 TokenBucket 或 HighLow 时所需的其他 Limit 参数。 单位取决于指定的 wsme:Operator。

    当 wsme:Operator 为 HighLow 时,这定义低阈值,而 wsme:Value 定义高阈值。指定的阈值应该低于 wsme:Value 的值。当未指定时,缺省限制为 0。

    当 wsme:Operator 为 TokenBucket 时,这定义脉冲串传输的最大大小,或存储区中令牌的最大数,而值指定每个时间间隔令牌数填满存储区的速率。当未指定时,缺省限制为 0,TokenBucket 相当于 GreaterThan 操作。

调解策略操作

调解 Action 元素指定要采取的操作。尽管语法允许多种组合,它们并非都有意义,当指定冲突操作时(如要求对消息同时执行排队和拒绝操作),策略编写点将拒绝此行为。允许的调解策略操作为:
  • QueueMessage – 此操作指定当满足逻辑条件时,事务将排队。将不会重新开始消息处理,直至不再满足逻辑条件。队列方法和任何相关的超时如示例 WebSphere DataPower 中策略执行点所定义。当在单个 Action 元素中指定多个操作时,QueueMessage 应该是第一个操作。
  • RejectMessage – 此操作指定当满足逻辑条件时,将拒绝事务。将继续拒绝事务,直至不再满足逻辑条件。当拒绝事务时,会将 SOAP 故障返回至客户机(消费者)服务。当在单个 Action 元素中指定多个操作时,RejectMessage 应该是第一个操作。 QueueMessage 和 RejectMessage 互斥。
  • Notify - 此可选元素指定当满足逻辑条件时,将产生通知。对于 WebSphere DataPower,将消息写入 DataPower 系统日志。
  • RouteMessage - 此可选元素指定当满足逻辑条件时,会将消息路由至指定的端点目标。将继续将消息路由至指定的端点,直至不再满足逻辑条件。
    • EndPoint – 当指定 RouteMessage 操作时,此参数为必需的。受支持的端点值可以是 IP 地址、主机名或虚拟主机;例如负载均衡器组。
  • ValidateMessage - 此可选元素指定应根据指定的语法对消息进行验证。验证失败时应拒绝消息。如果指定了 ValidateMessage,那么必须将 XSD 或 WSDL 指定为子参数。SCOPE 可选,如果未指定,那么 SOAPBody 用于验证。
    • XSD - 指定将针对它包含的 URI 标识的 XML 模式,验证消息。
    • WSDL - 指定将针对它包含的 URI 标识的 Web service 描述 (WSDL),验证消息。
    • SCOPE - 指定将验证消息的哪一部分。下表列出了可能值及其含义:
      表 3. ValidateMessage 元素
      描述
      SOAPBody 验证 SOAP 主体元素的内容,而不对 SOAP 故障进行特殊处理。(缺省值)
      SOAPBodyOrDetails 对于 SOAP 故障,验证详细信息元素的内容,否则验证主体元素的内容。
      SOAPEnvelope 验证包括信封在内的整个 SOAP 消息。
      SOAPIgnoreFaults 如果消息是 SOAP 故障,那么不进行任何验证,否则验证 SOAP 主体元素的内容。
  • ExecuteXSL - 指定将使用指定的 Stylesheet 和 Parameter 执行 XSL 转换。执行失败时,将拒绝事务。必须指定 Stylesheet 信息,而 Parameter 为可选,应根据指定的特定样式表的需要来指定。
    • Stylesheet - 指定转换操作将使用由包含的 URI 指定的样式表。样式表必须是 XSLT 文件。
    • Parameter - 此可选的重复元素指定要用于 ExecuteXSL 操作的样式表参数。
      • Name – 每个对应的 Parameter 参数都需要此属性,它指定了参数的名称。
      • Value - 每个对应的 Name 参数都需要此属性,它指定了参数的值。

概念 概念

反馈


时间戳记图标 最近一次更新时间: 2012年10月16日


http://publib.boulder.ibm.com/infocenter/prodconn/v1r0m0/topic/com.ibm.scenarios.soawdpwsrr.doc/topics/csoa2_SOA_implementation.htm