WebSphere Business Monitor 事件處理內幕揭祕
WebSphere Business Monitor (Monitor) 的使用者有時告訴我說,它的事件處理演算法非常難於掌握。基本上,他們似乎是被篩選器表示式和關聯謂詞的用途、各種事件交付選項以及監視上下文中驅動更新的方式難住了。
在本文中,我將讓您瞭解這些概念的幕後祕密。我將不詳細回顧 Monitor 程式設計模型的細微之處,如觸發器、計時器和巢狀監視上下文,而是僅重點討論事件處理的基礎。
我還提供了一個簡單的幻燈片演示可供下載,其中通過簡單的故事情節演示了 Monitor 處理事件時事件所經歷的路徑。
Monitor 的核心是觀察器物件。為您希望監視的每個實體建立了一個觀察器物件。所監視的實體可以是有形的,如裝置、伺服器或車輛;或者是抽象的,如流程執行或銷售業績。觀察器物件訂閱那些報告所監視實體中任何狀態更改的事件,然後基於那些事件中的資訊更新自己的狀態。
Monitor 觀察器物件稱為監視上下文 或 MC,因為它所收集的資訊為監視特定實體提供了上下文。MC 中的資料欄位稱為度量,因為它們通常表示與業務相關的資訊的測量結果。
例如,假設一家豪華汽車公司希望監視其車隊。該公司可能為其開始的每次旅行分配一個 MC。可以使用在路上從豪華汽車公司接收的資訊更新此上下文,例如旅客上車時間、交通擁塞和旅客下車時間。一次旅行的 MC 可能包含旅行持續時間、上車和下車延遲、從這些度量得出的客戶滿意度指數、平均行車速度等度量。
通過擴充套件監視能力,該豪華汽車公司可能為駕駛員建立 MC,其中包含諸如準時性、每月旅行次數、平均客戶滿意度等度量,或者為汽車建立 MC,其中包含諸如里程油耗、下一次計劃的維修等度量。這些 MC 就是針對駕駛員和車輛的觀察器物件。
MC 的度量和事件訂閱由監視上下文定義 所定義。正如 MC 是專用物件一樣,其定義也是專用類,用於定義其例項的結構和行為。
現在您瞭解了基本概念和術語,下面讓我們看看它究竟是如何工作的。
處理事件的過程包括三個步驟:
- 篩選——這是什麼型別的事件?
- 關聯——哪些 MC 與此事件有關?
- 更新 MC——此事件更新哪些度量,如何更新?
每個 MC 僅訂閱某些型別的事件。
例如,在該豪華汽車公司中,旅行 MC 可能訂閱那些報告旅行排程、乘客上車、乘客下車、交通擁擠和汽車事故的事件。旅行 MC 定義將需要定義五個事件訂閱,每個事件訂閱分別針對一種型別的事件。
事件訂閱包含篩選器,這是一個布林表示式,對所訂閱的事件求值為 True,對其他所有事件求值為 False。定義篩選器的唯一規則在於,它必須允許所需型別的事件通過並阻止所有其他事件。出於效能的考慮,應該將篩選器保持儘可能小,換句話說,它們應該儘可能簡單,足以在各種各樣的預期事件中可靠地確定特定型別的事件即可。
如果所訂閱的事件包含了確定其有效負載的 xsi:type 屬性,並且不同的事件例項具有不同的型別,則所需做的工作就是測試此屬性。另一方面,如果使用通用事件來報告不同型別的例項,並且其型別只能通過進一步檢查事件內容來確定,則篩選器必須測試額外的欄位。
在該豪華汽車示例中,如果小汽車使用有效負載始終為 limo:Trip(其中 limo 表示名稱空間)的事件來報告旅行狀態,並使用 event nature 欄位來區分排程、上車和下車事件,則需要測試 event nature 欄位以及 xsi:type 屬性以確定到達的事件是什麼型別。
在事件通過訂閱的篩選器以後,將針對 MC 定義的每個例項對訂閱的關聯謂詞求值。關聯謂詞通常將事件中的某個鍵值(例如唯一旅行識別符號)與包含相同鍵的度量作比較。如果找到匹配的 MC,則該 MC 可以接收事件以做進一步的處理。如果未找到,則可以建立新的 MC 上下文。
但是如果這不是您希望的結果,該怎麼辦呢?例如,假設某個乘客上車事件到達並且沒有找到匹配的 MC。在此情況下,您可能不希望建立新的 MC,而是引發一個錯誤條件,指示未接收到“已排程小汽車”事件(此事件應該先發生並建立 MC)。類似地,如果某個“已排程小汽車”事件到達,並且關聯處理找到了匹配的 MC,這表明已接收到了相同旅行的“已排程小汽車”事件。這同樣表示一個錯誤,向已經存在的上下文交付重複排程事件不是您希望的結果。
可以看到,能夠控制事件關聯演算法是非常重要的。這可以通過配置事件交付設定來實現。每個事件訂閱具有三個設定,其中涵蓋了零個、一個和多個 MC 滿足關聯謂詞的情況。
下表顯示了所有可能的事件交付設定。
零個匹配 | 一個匹配 | 多個匹配 |
---|---|---|
忽略 | 忽略 | 忽略 |
視為錯誤 | 視為錯誤 | 視為錯誤 |
建立新 MC | 交付給(單個)匹配 MC | 交付給任何匹配 MC |
回滾所有更改並在以後重試此事件的處理 | 交付給所有匹配的 MC |
在關聯處理確定用於事件交付的 MC 以後,事件將更新那些 MC。
要理解這是如何工作的,您可以將 MC 看作是電子表格,其單元格表示度量。對於每個度量,MC 定義定義了更新其值的一個或多個對映。對映就像電子表格公式。一個對映可能依賴多個事件訂閱,並潛在地依賴其他度量。
當將某個事件交付到某個 MC 時,依賴該事件的所有對映都會自動執行,並使用結果更新它們的目標度量。然後以級聯方式處理進一步的更新,就像在電子表格中一樣:依賴更新後的度量的對映將執行,然後依賴其目標的對映將執行,以此類推。該級聯必須終止,因為對映定義的依賴關係圖不允許含有迴圈。例如,如果度量 B 依賴度量 A,則度量 A 一定不能依賴度量 B。
如果您仍然對某些概念有點不解,或者只想出於興趣瞭解一下該過程是如何工作的,請檢視一下本文附帶的“事件處理”幻燈片演示。該幻燈片使用簡單的圖形和易於理解的故事情節,全程演示了我在本文中描述的步驟。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-582731/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- WebSphere Business Events 進行業務事件處理Web行業事件
- 使用 WebSphere Business Events V6.1 進行業務事件處理Web行業事件
- 揭祕JAVA JVM內幕JavaJVM
- 揭祕《Arduino技術內幕》UI
- 配置 WebSphere Business Monitor V6.1.2 安全環境Web
- WebSphere Business Monitor V6.2 中的新增功能Web
- 自定義 WebSphere Business Monitor 業務空間的外觀Web
- HPE揭祕網路犯罪經濟的內幕
- 華章揭祕系列精品圖書(《Android應用開發揭祕》、《GWT揭祕》、《Spring技術內幕》)AndroidSpring
- 揭祕 IFTTT 每天處理幾十億事件資料的基礎結構事件
- WebSphere Business Events 構建業務事件應用程式Web事件
- Unity《Boat Attack》Demo幕後揭祕(內附原始碼下載)Unity原始碼
- Business Insider:揭祕中國11家“獨角獸”IDE
- Kafka流處理內幕詳解Kafka
- Google塗鴉幕後團隊揭祕Go
- 構建一個高可用 WebSphere Business Events 事件基礎設施Web事件
- FastTunnel-內網穿透原理揭祕AST內網穿透
- ModernUI教程:處理內容導航事件UI事件
- 使用WebSphere Business Events REST介面從應用程式發出簡單業務事件WebREST事件
- 從點選螢幕到事件處理的事件分發原始碼流程事件原始碼
- 現代瀏覽器探祕(part4):事件處理瀏覽器事件
- 揭祕氪金遊戲的背後,隱藏著哪些不為人知的內幕?遊戲
- WebSphere Business Services Fabric v6.1 概述Web
- 事件處理事件
- 揭祕2018上半年全球6大網路安全“內鬼事件”事件
- 揭祕鼎益豐隋廣義東方古典事件事件
- App國內變現環境全揭祕APP
- nginx常用功能全揭祕(內附福利~~)Nginx
- WebSphere Business Modeler 的 10 大問題Web
- 使用 WebSphere Business Modeler 進行業務建模Web行業
- [React技術內幕] setState的祕密React
- 使用Business Events和Business Monitor對感測器資料進行智慧分析
- 深入剖析Vue原始碼 - 揭祕Vue的事件機制Vue原始碼事件
- Flutter | 事件處理Flutter事件
- JavaScript事件處理JavaScript事件
- React事件處理React事件
- vue事件處理Vue事件
- IE事件處理事件