主頁 > 軟體設計 > 突破傳統監測模式:業務狀態監控HM的新思路

突破傳統監測模式:業務狀態監控HM的新思路

2023-04-26 08:16:26 軟體設計

作者:京東保險 管順利

一、傳統監控系統的盲區,如何打造業務狀態監控,

在系統架構設計中非常重要的一環是要做資料監控和資料最終一致性,關于一致性的補償,已經由演算法部的大佬總結過就不在贅述,這里主要講如何去補償?補償的方案哪些?這就引出來資料監控系統了,有小伙伴會問了,為什么業務狀態監控系統可以做補償?別急,往下看,

傳統監控系統分為兩種,系統監控和業務監控,系統監控有并發量監控、例外監控、呼叫鏈監控、埠監控、zabbix 監控、http監控等,業務監控是指用以監控業務資料是否正常,用戶需要進行業務埋點進行資料采集,業務監控底層常規依賴日志上報系統,接入業務監控之前先申請接入日志上報系統,如圖1

(圖1)

從業務監控時序圖中看到一般分為五步:

1.資料埋點,業務端埋點后上報的日志,也可以是mysql,日志檔案最后通過flume或者bin log上報,

2.資料收集,通常都通過kafka做資料采集,

3.資料清洗,一般都是在ods層用spark-streaming進行分流,清洗,

4.資料存盤,資料分流后會存盤到dw層,最后落到各種庫里面,

5.資料展示,開源的很多,用的多還是grafana,還有資料大屏等,

看到這里大家有沒有感覺到一絲困惑?有沒有感覺跟鏈路追蹤傻傻分不清楚?業務監控和鏈路追蹤的區別就成了侵入式埋點上報和無侵入式agent抓取上報,這仿佛沒了靈魂,于是我去問了下AI,AI給出的答案是“業務監控則是一種用于監測業務指標和關鍵業務流程的技術,目的在于實作對業務運營狀況的實時了解和快速回應”,

二、新型業務監控,hunter-monitor的誕生,

站在巨人的肩膀上開始俯視全域,發現真實的需求:

1.報警能力,圍繞業務,運營場景,設定各種預警的閾值,達到閾值后要及時發出回應,

2.資料計算和資料統計能力,根據埋點計算整條鏈路上,每個節點的例外資料,幫做統計和輸出,

3.觸達能力,京me,郵件,必要時電話,短信,微信都要跟上,

4.資料歸檔能力,資料歸檔是為了兜底,做最終一致性,是為了例外時做資料比對,

5.資料自理能力,在AI時代,必須要有自動消化處理的能力,

6.報警規則能力,“樹”的應用,要把整個系統鏈路串聯起來的能力,

我們是京東保險平臺研發部,承接商城的端延保訂單的流量,流量全是交易資料,交易資料是不允許丟失,因此我們孕育出自己的業務監控系統“監控獵手 (hunter-monitor)” 簡稱hm,hm已經實作了以上6種能力,在出現問題時,會第一時間通知業務和產品,還提供了例外資料統計、節點資料計算、回溯、補償等能力,業務或產研發需要時,可以在平臺上做資料對比,還具備了延展能力,如可以對接jsf介面,來實作自動補償能力,

hm業務狀態監控的核心能力是:資料串聯和資料計算,是可以把業務整條鏈路在系統中的埋點,已線性串聯起來,并展示出每個節點的例外狀態資料,最終消化掉例外資料,

三、三連問:誰適合接入?如何使用?有接入的實體么?

1、誰適合接入

接入保險SaaS作業臺的系統都可以接入業務狀態監控,沒介入的呢?只需要在保險SaaS作業臺中,創建租戶便可以使用hm業務狀態監控,

2、如何使用

2.1 監控接入

接入hm只要簡單的三步即可,創建規則,創建報警規則,業務接入埋點,創建方式和常規的業務監控系統一樣,

2.2 資料處理

例外資料最終需要處理掉,在監控串列中可以一鍵處理例外資料

2.3 定制化

我們支持觸達內容定制化,例外資料處理方式定制化,例外資料統計定制化,可以呼叫業務系統jsf介面完成自動處理,也可以根據需求出例外資料報告,更可以深度幫助業務方定制系統鏈路中的例外處理,hm已應用到延保交易全鏈路系統,履約平臺,業財一體平臺和保險abTest等系統,我們來看幾個延保業務的接入的場景,

3、實戰!延保業務接入場景

3.1 大屏展示:

每周都會公示出上一周延保業務出現的問題,并通過經代小助手、京me和郵件發送給業務方負責人,支持例外投保單的下載,業務收到郵件后會按照郵件中的攻略去操作,完成正確的投保,截止目前幫助業務側完成40萬+的例外投保單的重新投保,幫助業務降低了客訴率,也幫助保司拿到保費,(圖2)

(圖2)

3.2 自動補單:

延保的業務上游大多來自商城,業務會在系統里處理訂單分發到下游,由于量大,操作門檻高,總會出現例外的情況,比如漏配某個引數,導致交易失敗或者用戶不能正常履約,以前都是到客戶履約的時候或者下游交易發起結算失敗時,才能發現的問題,在hm中配置了監控后,發現例外情況會呼叫補單的jsf介面,觸發自動補單,以前出現問題最長要已天為單位才能解決,現在分鐘級解決問題,起到了降本增效的效果,

3.3 資料歸檔:

hm給延保上游和下游交易提供資料了永久歸檔能力,如發現各種例外類的情況,可以從hm系統里面匯出資料來作資料比對,如果是金額類的還可以自動接入到對賬系統,在線上查看對賬結果,匯出對賬差異資料(圖3),同時會發送例外資料郵件,通知對應的產品和業務(圖4),

(圖3)

(圖4)

四、HM的內核,技術架構和實作方案

如果實在是沒辦法接入,只能自研怎么辦?沒關系,我把技術方法列出來,給大家提供解決方案的思路,

1.技術架構

hm架構上化繁為簡,單刀直入,從最核心的業務資料下手,在業務應用中埋點,通過樹型節點nodeId串起整條鏈路,埋點資料統一進數倉清洗后,由調度中心定時觸發去做資料計算和資料統計,展示到前端,我們先來看一張架構圖,圖5

(圖5)

2.核心技術

2.1 規則引擎

規則引擎是指埋點的規則,規則引擎參考了Jaeger原始碼,用來生成我們的規則編碼nodeId,(圖6)構建成hm的規則樹,最終快取到作業業務臺展示(圖7),

(圖6)

(圖7)

2.2 報警引擎

報警引擎是指配置報警的一系列的規則,資料計算的規則,觸達的方式,創建好規則后,要對每一個規則進行詳細的報警配置,包括觸發報警的型別,報警規則,操作閾值,處理方式等,(圖8)報警型別指觸達方式,繼承了保險SaaS-msg的能力,支持郵件、京me、微信、電話等觸達方式,任務系統使用Easy-Job來動態管理任務,處理方式可以對接業務方Jsf 來完成倍訓,也可以設定成歸檔,以便后續的有匯出或對數的需求,

(圖8)

2.3 資料埋點

在保險作業臺配置好埋點規則和報警規則后,就可以在業務方去埋點,區別于鏈路追蹤或傳統的基于Agent系統,它們都是無侵入埋點系統,hm則屬于強侵入式埋點系統,在這里我們定制了一套埋點規范,“必須啟用異步執行緒,進行發送MQ或者呼叫API介面”,埋點支持兩種方式,一種是send msg to topic,mq支持jmq2/jmq4,另一種就是通過呼叫API去初始化hunter-expoxt的物體類,由hm來發送訊息,

2.4 資料清洗

hm的主要職責在業務資料的歸納、分揀,除了埋點接入外還支持,mq、資料庫等資料源的接入,所有的資料統一有集團的DP(DataPilot )平臺的DataBus系統的DTS完成,統一進數倉的FDM/BDM層,再由集團的調度中心Buffalo(EMR),配置的spark任務執行資料分揀,最終資料進入doris/hive/es中存盤,

2.5 資料計算

hm只記錄例外資料,發力在例外資料的統計和計算上,在配置好規則節點和系統埋點后,hm會去計算每個節點的例外資料,根據報警規則來進行處理,或通知業務和產研,或呼叫業務系統的jsf介面去做例外資料的自動處理,又或者根據規則自行處理資料,

2.6 資料統計

hm每周會出資料統計報表發送給業務和產研,報表中會體現他負責的業務線下所有系統的例外資料,包括處理過的例外資料和未處理的例外資料,A業務線和B業務線例外對比資料,業務系統與業務系統的例外對比資料等,可以根據業務需求定制報表,幫助業務和產研更好掌握系統的最新狀況,

2.7 任務中心

任務中心是指EasyJob,是和報警規則強系結的,調度任務分為兩類,一類是業務類任務,是動態去創建的任務,按照設定的corn執行,另一類是平臺任務,用于維護業務類任務的,比如定期去洗掉沒有例外的任務等,(圖9)

(圖9)

2.8 觸達展示

觸達方式支持了保險作業臺、經代小助手、郵件、京me通知、企業微信、電話語音等,根據業務方需求來選擇,

2.9 處理方式

如果觸達3次還沒有做例外的處理資料,會進行自動升級,在下次觸達時會抄給上一級,例外資料需要在hm串列頁里做資料狀態變更,

2.10 開源能力:jaeger

hm底層參考了jaeger-core,重寫了jaegerSpan和jaegerTracer類,并把jaeger-core和opentracing-api重新打包-形成自己的jar(hunter-api)

五、總結

以上是hm的全部技術細節,hm靈魂是資料計算、治理、資料統計,hm根基是集成百家之長,hm生在保險SaaS作業臺,是我們平臺研發部自研的一款面向業務的,例外監控處理的解決方案,匯集了團隊每位伙伴的智慧,感興趣的同學可以聯系我們,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/551238.html

標籤:架構設計

上一篇:虛擬存盤管理中幾種缺頁中斷演算法計算邏輯

下一篇:返回列表

標籤雲
其他(158137) Python(38106) JavaScript(25394) Java(18001) C(15217) 區塊鏈(8260) C#(7972) AI(7469) 爪哇(7425) MySQL(7144) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5870) 数组(5741) R(5409) Linux(5329) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4561) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2431) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1960) Web開發(1951) HtmlCss(1927) python-3.x(1918) 弹簧靴(1913) C++(1911) xml(1889) PostgreSQL(1874) .NETCore(1855) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 突破傳統監測模式:業務狀態監控HM的新思路

    在系統架構設計中非常重要的一環是要做資料監控和資料最終一致性,這里主要講如何去補償?補償的方案哪些?這就引出來資料監控系統了。有小伙伴會問了,為什么業務狀態監控系統可以做補償?別急,且看本文。 ......

    uj5u.com 2023-04-26 08:16:26 more
  • 虛擬存盤管理中幾種缺頁中斷演算法計算邏輯

    題目一:在一個采用頁式虛擬存盤管理的系統中,有一用戶作業,它依次要訪問的頁面序列是1,2,3,4,1,2,5,1,2,3,4,5.假定分配給該作業的頁數為3且作業初始時未裝載頁面,那么采用FIFO調度演算法產生的缺頁中斷數為多少,采用LRU調度演算法產生的缺頁中斷數為多少? 決議: FIFO調度演算法:先 ......

    uj5u.com 2023-04-26 08:16:09 more
  • 【代理設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    簡介 代理模式(Proxy Pattern)是一種結構型設計模式,用一個類來代理另一個類或幾個類的功能。 在代理模式中,我們創建具有現有物件的物件,以便向外界提供功能介面。 延遲初始化(虛擬代理)。如果你有一個偶爾使用的重量級服務物件,一直保持該物件運行會消耗系統資源時,可使用代理模式。 訪問控制( ......

    uj5u.com 2023-04-25 09:42:43 more
  • 【代理設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    簡介 代理模式(Proxy Pattern)是一種結構型設計模式,用一個類來代理另一個類或幾個類的功能。 在代理模式中,我們創建具有現有物件的物件,以便向外界提供功能介面。 延遲初始化(虛擬代理)。如果你有一個偶爾使用的重量級服務物件,一直保持該物件運行會消耗系統資源時,可使用代理模式。 訪問控制( ......

    uj5u.com 2023-04-25 09:37:20 more
  • 【原型設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    簡介 原型模式(Prototype Pattern)是一種創建型設計模式,使你能夠復制已有物件,而無需使代碼依賴它們所屬的類,同時又能保證性能。 這種模式是實作了一個原型介面,該介面用于創建當前物件的克隆。當直接創建物件的代價比較大時,則采用這種模式。 如果你需要復制一些物件,同時又希望代碼獨立于這 ......

    uj5u.com 2023-04-24 10:31:00 more
  • 【原型設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    簡介 原型模式(Prototype Pattern)是一種創建型設計模式,使你能夠復制已有物件,而無需使代碼依賴它們所屬的類,同時又能保證性能。 這種模式是實作了一個原型介面,該介面用于創建當前物件的克隆。當直接創建物件的代價比較大時,則采用這種模式。 如果你需要復制一些物件,同時又希望代碼獨立于這 ......

    uj5u.com 2023-04-24 10:25:37 more
  • 四大常用MQ的優缺點和應用場景選擇

    一、優缺點 ActiveMQ 官網地址:http://activemq.apache.org/ - 官網介紹 Apache ActiveMQ是最流行的開源、多協議、基于Java的訊息代理。它支持行業標準協議,因此用戶可以從多種語言和平臺的客戶端選擇中獲益。從JavaScript、C、C++、Pyth ......

    uj5u.com 2023-04-23 07:53:02 more
  • 四大常用MQ的優缺點和應用場景選擇

    一、優缺點 ActiveMQ 官網地址:http://activemq.apache.org/ - 官網介紹 Apache ActiveMQ是最流行的開源、多協議、基于Java的訊息代理。它支持行業標準協議,因此用戶可以從多種語言和平臺的客戶端選擇中獲益。從JavaScript、C、C++、Pyth ......

    uj5u.com 2023-04-23 07:52:29 more
  • 【觀察者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    簡介 觀察者模式(Observer Pattern)是一種行為型模式。它定義物件間的一種一對多的依賴關系,當一個物件的狀態發生改變時,所有依賴于它的物件都得到通知并被自動更新。 觀察者模式使用三個類Subject、Observer和Client。Subject物件帶有系結觀察者到Client物件和從 ......

    uj5u.com 2023-04-22 08:03:33 more
  • 【觀察者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    簡介 觀察者模式(Observer Pattern)是一種行為型模式。它定義物件間的一種一對多的依賴關系,當一個物件的狀態發生改變時,所有依賴于它的物件都得到通知并被自動更新。 觀察者模式使用三個類Subject、Observer和Client。Subject物件帶有系結觀察者到Client物件和從 ......

    uj5u.com 2023-04-22 08:03:16 more