原則

在建立調解原則時,使用 WSRR 作為「原則編寫點」及使用 WebSphere® DataPower® 作為「原則強制執行點」的實作詳細資料。

WSRR 中的原則

您可以使用 WSRR 來建立所有 SOA 原則,包括 SLA(服務等級協定)原則、調解原則、監視原則,以及自訂原則。您可以使用 Business Space 使用者介面來建立、更新或刪除 WSRR 中的原則文件。原則文件可以包含原則表示式,指定特定原則網域的一些原則。或者,您可以建立可從其他文件組合現有原則的原則文件。使用原則 ID 來參照個別的原則,該 ID 是在您新增原則至文件時所指定。原則表示式代表原則的宣告,並與 WS-Policy 文件中的 <wsp:Policy> 元素相等。

若要在 Business Space 中建立調解原則,請參閱編寫新的調解原則

調解原則主張

「服務等級協定 (SLA)」源自商業需求,要求服務提供的服務品質必須符合指定的標準。當設計服務時,會建立功能需求,以指引服務進行之動作的邏輯。非功能需求會平行指定,作為該服務的分析及設計的一部分,以指定預期服務提供的服務品質。例如,企業可能具有一個服務,提供資訊以回應客戶的網際網路查詢。目標是要在 3 秒內傳回回應。作為端對端交易操作的一部分,決定此服務必須在 2 秒內傳回其資訊,才能符合企業的非功能需求。

您可以撰寫一個原則,對服務的效能實作執行時期檢查,並在符合需求時採取動作,以保證服務符合其 SLA。例如,您可能有一個服務主要端點,其通常(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:00 到下午 5:00 生效。

可以指定的排程參數如下:
  • StartDate - 此選用屬性以 xs:date 格式指定排程生效的日期。StartDate 是內含的,而且如果此屬性不存在,則排程在今天立即生效。(按一下 xs:time 超鏈結可瞭解此業界標準。)
  • StopDate - 此選用屬性以 xs:date 格式指定排程不再生效的日期。StopDate 是排除的,而且指定的日期必須在開始日期之後。當停止日期早於或等於開始日期,則排程永不生效。如果此屬性不存在,則排程無限期生效。
  • Daily - 此選用元素指定排程有效期間的每日時間範圍。如果這個元素不存在,則排程會全天生效。
    • StartTime - 如果指定 Daily,則需要此屬性。它會以 xs:time 格式指定排程每日開始的時間。(按一下 xs:time 超鏈結可瞭解此業界標準。)
    • StopTime - 如果指定 Daily,則需要此屬性。它會以 xs:time 格式指定排程每日停止的時間。StopTime 是排除的,而且如果指定的時間早於或等於每日開始時間,則排程會於下一日指定的停止時間停止。
  • Weekdays - 此選用元素指定排程中包括一週的星期幾。如果這個元素不存在,則排程中會包括該週的每一天。這個元素僅影響每日時間範圍的開始,因為容許排程可以超過午夜執行。比方說,如果將排程設成在星期三晚上 11:00 開始執行 2 小時,此排程實際上將會在星期四凌晨 1:00 結束。
    • Days - 如果指定 Weekdays,則需要此屬性。它會以加號 ('+') 區隔的名稱清單列出排程中包括一週的星期幾;例如,"Monday+Tuesday+Wednesday+Thursday+Friday+Saturday+Sunday"。

調解原則條件表示式

條件表示式(如果指定的話)為指定布林表示式的非重複元素。

表示式包含三個參數:Attribute、Operator 及 Value,加上選用的 Interval 及 Limit 參數。如果 Attribute 及 Value 上應用的 Operator,加上適當的 Interval 及 Limit,評估為 True,則表示式評估為 True。Limit 元素僅與 HighLow 及 TokenBucket 運算子搭配使用。如果未指定,則 Limit 的值為 0。如果未指定 Interval,則預設值為 60 秒。

可以指定的「表示式」參數如下:
  • Attribute - 下表彙總定義的屬性及其類型。
    表 1. 定義的屬性
    屬性 說明及類型
    ErrorCount 在此監視間隔期間觀察到的錯誤數目。
    MessageCount 在監視間隔期間截取的實際訊息數目。
    InternalLatency 內部延遲(處理時間)(以秒為單位)。
    BackendLatency 軟體驅動裝置到伺服器延遲(以秒為單位)。
    TotalLatency 後端系統與內部延遲之和(以秒為單位)。
  • Operator - 下表彙總可用的運算子及其意義:
    表 2. 運算子
    運算子 意義
    GreaterThan 簡式數值演算法,當 Attribute 大於定義的 Value 時,即會評估為 True。
    LessThan 簡式數值演算法,當 Attribute 小於定義的 Value 時,即會評估為 True。
    TokenBucket 容許激增的速率型演算法。此演算法的組成為儲存區與 Limit 記號的上限容量。儲存區會以每個 Interval 的 Value 記號的常數速率重新填入,然而對於每一個單位的 Attribute,則會移除一個記號。儲存區中沒有記號時,此演算法會評估為 True,否則評估為 False。以下範例可協助說明此演算法:假設 Limit=100、Value=5、Interval=1 秒,以及 Attribute=MessageCount。
    1. 儲存區由於上限容量 100 個記號而開始滿載
    2. 當訊息送達時,演算法會檢查儲存區是否保留任何記號:
      1. 若是,則演算法會評估為 False,而且會從儲存區中移除一個記號
      2. 若不是,則演算法評估為 True。
    3. 若空間允許,演算法始終會每秒加回 5 個記號至儲存區。
    HighLow 當 Attribute 達到指定為 Value 的高臨界值時,此演算法會評估為 True,並繼續評估為 True,直到 Attribute 達到指定為 Limit 的低臨界值。
  • 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 的臨界值。未指定時,預設 Limit 為 0。

    當 wsme:Operator 為 TokenBucket 時,它會定義激增的大小上限,或儲存區中的記號數上限,而 Value 則指定重新填入儲存區的速率,以每個 Interval 的記號數表示。未指定時,預設 Limit 為 0,然後 TokenBucket 相等於 GreaterThan 作業。

調解原則動作

「調解動作」元素指定要採取的動作。雖然語法容許許多組合,但是它們並非全部都有意義,而且當指定衝突的動作時,例如要求同時置入佇列並拒絕訊息,「原則編寫點」會拒絕該行為。容許的調解原則動作如下:
  • 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 服務說明 (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