策略

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

WSRR 中的策略

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

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

调解策略断言

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

您可以编写一个策略,用于对服务性能执行运行时检查,并在满足需求的情况下采取操作以保证服务满足其 SLA。例如,您可能具有一个通常(95% 的情况)能够在 2 秒内提供服务响应的服务主端点。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:time 超链接以了解此行业标准)。
  • 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 - 此可选元素以 xs:duration 格式定义时间间隔,用作可变期限,用于在对表达式求值时度量 wsme:Attribute。如果未指定,那么使用的时间间隔为 60 秒。如果指定该元素,那么必须指定一个合理值,将配置的策略实施点功能考虑在内。即,值越高,策略实施点跟踪属性需要的内存越多。(单击 xs:duration 超链接以了解此行业标准)。
  • Limit - 此可选整数元素定义当 wsme:Operator 为 TokenBucket 或 HighLow 时所需的其他 Limit 参数。 单位取决于指定的 wsme:Operator。

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

    当 wsme:Operator 为 TokenBucket 时,它定义脉冲串传输的最大大小,或存储区中令牌的最大数量,而 Value 指定重新填充存储区的速率(以每个 Interval 内的令牌数计)。当未指定时,缺省限制为 0,TokenBucket 相当于 GreaterThan 操作。

调解策略操作

调解 Action 元素指定要采取的操作。虽然语法允许多种组合,但并非所有组合都有意义,当指定冲突的操作(如要求对消息同时执行排队和拒绝操作)时,策略编写点将拒绝此行为。允许的调解策略操作为:
  • QueueMessage – 此操作指定当满足逻辑条件时,事务将排队。将不会重新开始消息处理,直至不再满足逻辑条件。队列方法和任何相关的超时如示例 WebSphere DataPower 中策略实施点所定义。当在单个 Action 元素中指定多个操作时,QueueMessage 必须是第一个操作。
  • RejectMessage – 此操作指定当满足逻辑条件时,将拒绝事务。将继续拒绝事务,直至不再满足逻辑条件。当拒绝事务时,会将 SOAP 故障返回至客户机(使用者)服务。当在单个 Action 元素中指定多个操作时,RejectMessage 必须是第一个操作。 QueueMessage 和 RejectMessage 互斥。
  • Notify - 此可选元素指定当满足逻辑条件时,将产生通知。对于 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 - 指定将使用指定的样式表和参数执行 XSL 转换。执行失败时,将拒绝事务。必须指定样式表信息,而参数为可选,必须根据指定的特定样式表的需要来指定。
    • Stylesheet - 指定转换操作使用由包含的 URI 指定的样式表。样式表必须是 XSLT 文件。
    • Parameter - 此可选的重复元素指定要用于 ExecuteXSL 操作的样式表参数。
      • Name – 每个对应的 Parameter 参数都需要此属性,它指定了参数的名称。
      • Value - 每个对应的 Name 参数都需要此属性,它指定了参数的值。

概念 概念

反馈


时间戳记图标 最近一次更新时间: 2014 年 3 月 5 日


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