在创建调解策略时,将 WSRR 用作策略编写点和将 WebSphere® DataPower® 用作策略实施点的实施详细信息。
您可以使用 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 点。
调解策略条件表达式
条件表达式(如果指定)是用于指定布尔表达式的非重复元素。
该表达式包含三个参数:Attribute、Operator 和 Value,以及可选的 Interval 和 Limit 参数。如果对 Attribute 和 Value 应用 Operator 以及 Interval 和 Limit(适当情况下),求值为 True,那么表达式求值为 True。限制元素仅与 HighLow 和 TokenBucket 运算符一起使用。如果未指定,那么 Limit 的值为 0。如果未指定 Interval,那么缺省值为 60 秒。
属性 | 描述和类型 |
---|---|
ErrorCount | 此监控时间间隔内检测到的故障数。 |
MessageCount | 此监控时间间隔内拦截的实际消息数。 |
InternalLatency | 内部等待时间(处理时间,秒)。 |
BackendLatency | 设备到服务器等待时间(秒)。 |
TotalLatency | 后端和内部等待时间之和(秒)。 |
运算符 | 含义 |
---|---|
GreaterThan | 一个简单的数字算法,当属性大于定义的值时,为 True。 |
LessThan | 一个简单的数字算法,当属性小于定义的值时,为 True。 |
TokenBucket | 一种基于速率并允许脉冲串传输的算法。
算法包含最大容量为限制令牌数的存储区。每个时间间隔之间以固定比率的值令牌填满存储区,而对于每个属性单元,除去令牌。当存储区中没有令牌时,该算法求值为 True,否则,求值为 False。这里有个示例可以帮助说明此算法:假设限制=100,值=5,时间间隔=1 秒,属性=MessageCount。
|
HighLow | 一个算法,当属性达到指定为值的高阈值时,求值为 True,在属性达到指定为限制的低阈值之前,继续求值为 True。 |
当 wsme:Operator 为 HighLow 时,它定义低阈值,而 wsme:Value 定义高阈值。指定的阈值必须低于 wsme:Value 的值。当未指定时,缺省限制为 0。
当 wsme:Operator 为 TokenBucket 时,它定义脉冲串传输的最大大小,或存储区中令牌的最大数量,而 Value 指定重新填充存储区的速率(以每个 Interval 内的令牌数计)。当未指定时,缺省限制为 0,TokenBucket 相当于 GreaterThan 操作。
值 | 描述 |
---|---|
SOAPBody | 验证 SOAP 主体元素的内容,而不对 SOAP 故障进行特殊处理。(缺省值) |
SOAPBodyOrDetails | 对于 SOAP 故障,验证详细信息元素的内容,否则验证主体元素的内容。 |
SOAPEnvelope | 验证包括信封在内的整个 SOAP 消息。 |
SOAPIgnoreFaults | 如果消息是 SOAP 故障,那么不进行任何验证,否则验证 SOAP 主体元素的内容。 |