一種云服務起源數據的捕獲方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種云服務起源數據的捕獲方法包括以下步驟:根據服務框架和調用協(xié)議設計服務調用攔截器;將服務調用攔截器內置在服務調用協(xié)議中;當服務調用發(fā)生時,服務調用攔截器攔截服務調用請求,獲得服務動態(tài)調用依賴關系,并標識每個任務的服務組合;服務調用攔截器按照服務起源數據規(guī)范,根據獲得的服務動態(tài)調用依賴關系和經過標識的每個任務的服務組合生成并輸出起源日志文件;將起源日志文件進行數據處理后,存儲在云數據庫中。該方法關注服務狀態(tài)和依賴的監(jiān)控,通過捕獲服務的執(zhí)行狀態(tài)和路徑為云服務運維和管理提供技術支撐。
【專利說明】一種云服務起源數據的捕獲方法和裝置
【技術領域】
[0001] 本發(fā)明涉及云服務【技術領域】,尤其涉及一種云服務起源數據的捕獲方法和裝置。
【背景技術】
[0002] 云計算的核心是提供云服務,從平臺到應用,服務無處不在。服務起源描述了服務 的動態(tài)執(zhí)行歷史和過程。捕獲和理解云服務的動態(tài)行為特征成為提高服務質量(QoS)、資源 彈性分配、保障服務安全的關鍵。
[0003] 服務起源通過捕獲服務的執(zhí)行狀態(tài)和路徑,可以追蹤服務失敗的根本原因,當前 的服務故障可能由于所依賴的其他服務異常引起;通過跟蹤服務執(zhí)行路徑耗時,可以發(fā)現 系統(tǒng)的瓶頸;通過捕獲服務的輸入和輸出,可以驗證服務分布式執(zhí)行過程的正確性,實現分 布式Debug ;通過分析服務調用特征,包括峰值規(guī)律,作為計算資源動態(tài)分配的依據;通過 分析服務依賴形成的圖結構,劃分子群,作為優(yōu)化云部署結構的參考。
[0004] 服務起源對于云服務運維、管理具有重要價值。當前,云環(huán)境下的服務起源數據管 理仍然面臨了很多挑戰(zhàn)。由于云系統(tǒng)已經成為大數據中心和分布式集群,服務不僅僅部署 在大量分布式節(jié)點上,還根據任務需要動態(tài)組合,調用模式會根據用戶行為特征進行演化, 構成一個類生態(tài)系統(tǒng),這就給服務起源的獲取、存儲和分析帶來了困難,具體包括: 自動、透明化和支持異構服務起源捕獲; 區(qū)別于傳統(tǒng)的人工記錄和輸出服務起源,系統(tǒng)可以支持自動捕獲,通過可管理的配置, 自動捕獲服務的狀態(tài)和依賴關系,保持系統(tǒng)的透明性。與此同時,需要支持異構的系統(tǒng),能 夠作為第三方平臺,為不同的平臺的系統(tǒng)提供起源數據捕獲和管理方法。
[0005] 輕量級的服務捕獲方法; 服務起源的捕獲不能夠影響服務的正常運行,捕獲服務起源帶來的開銷應具有低消耗 特征,針對不同的服務特征,設計輕量級的捕獲方法,例如,對于高頻率調用服務,在很短的 時間內服務會運行成千上萬次,需要設計合適的抽樣策略。
[0006] 服務起源屬于數據起源范疇,數據起源的定義一般認為是描述了數據的演化歷 史。本方法給出的服務起源的定義為,描述了服務的動態(tài)執(zhí)行歷史和過程,體現了服務運行 的狀態(tài)(耗時、頻率等)和動態(tài)依賴關系。
[0007] 現有的服務監(jiān)控,主要關注的是服務本身的運行狀態(tài),很少關注服務之間的依 賴關系。專利"一種WEB服務監(jiān)控參數的調整裝置和方法"(申請?zhí)?:200910094000. 1) 主要關注特定的web服務監(jiān)控方法,專利"一種分布式應用系統(tǒng)的服務監(jiān)控方法及裝置" (申請?zhí)枺?01310625603. 6)關注應用系統(tǒng)的服務調用次數,發(fā)現調用異常。專利"云計算 服務監(jiān)控系統(tǒng)及方法"(申請?zhí)枺?01310625603. 6)和"服務監(jiān)控方法及系統(tǒng)"(申請?zhí)枺?201210009234. 3)主要關注服務監(jiān)控系統(tǒng)的體系結構和通訊,沒有關注服務狀態(tài)和依賴的 監(jiān)控。
【發(fā)明內容】
[0008] 本發(fā)明要解決的技術問題在于針對現有技術中的缺陷,提供一種云服務起源數據 的捕獲方法和裝置,該方法關注服務狀態(tài)和依賴的監(jiān)控,通過捕獲服務的執(zhí)行狀態(tài)和路徑 為云服務運維和管理提供技術支撐。
[0009] 本發(fā)明解決其技術問題所采用的技術方案是:一種云服務起源數據的捕獲方法, 包括以下步驟: 1) 根據服務框架和調用協(xié)議設計服務調用攔截器; 2) 將服務調用攔截器內置在服務調用協(xié)議中; 3) 當服務調用發(fā)生時,服務調用攔截器攔截服務調用請求,獲得服務動態(tài)調用依賴關 系,并標識每個任務的服務組合; 4) 服務調用攔截器按照服務起源數據規(guī)范,根據獲得的服務動態(tài)調用依賴關系和經過 標識的每個任務的服務組合生成并輸出起源日志文件;其中服務起源數據規(guī)范為一個9元 組: BasicProv (token, InvokingService, Servicelnvoked, location, elapsed time, timestamp, input, output, status);其中Token為一個32位的字符串,用于標識一個動 態(tài)的組合任務; InvokingService為服務調用者,也稱為服務消費者,其數據格式為一個32位的字符 串; Servicelnvoked為服務被調用者,也稱為服務提供者,其數據格式為一個32位的字符 串; Location為服務調用發(fā)生的位置,在云服務環(huán)境,為IP地址。
[0010] Elapsed time為服務調用的耗時,該耗時為從服務調用者的視角看,完成一次服 務調用所需要的時間,包含了被調用服務的嵌套執(zhí)行時間,其數據格式為一個8位的整型; Timestamp為服務調用事件發(fā)生的時間戳; Input為服務調用的輸入參數,數據存儲格式為32位的字符串; Output為服務調用的輸出數據文件,為一個XML對象,或者一個json數據對象; Status為服務執(zhí)行的狀態(tài),數據格式為一個布爾值,1表不成功,0表不失敗。
[0011] 5)將起源日志文件進行數據處理后,存儲在云數據庫中。
[0012] 按上述方案,所述服務調用攔截器的設計方法包括以下步驟: 1. 1)創(chuàng)建用于存儲服務起源信息的文件; 1. 2)服務調用者產生一個唯一的token值,作為識別服務動態(tài)依賴的標志; 1. 3)創(chuàng)建用于讀取并存儲服務調用開始時間的參量; 1. 4)創(chuàng)建用于讀取和存儲當前的IP地址的參量; 1.5)創(chuàng)建用于存儲所調用的服務名稱的參量; 1. 6)創(chuàng)建用于存儲所調用的服務的入口參數的參量; 1. 7)上述參量、文件和token值共同構成服務調用攔截器。
[0013] 按上述方案,所述唯一 token值根據時間和網卡產生。
[0014] 按上述方案,在收集攔截器的信息過程中,采用攔截器和攔截器管理分離的方式, 管理模塊負責所有攔截的注冊、日志收集和處理。
[0015] 按上述方案,所述步驟3)中,通過服務調用請求獲得服務動態(tài)調用依賴關系的具 體步驟為: 3. 1)解析服務調用協(xié)議的頭部信息; 3. 2)獲取頭部信息中的token值,并存儲到本地線程變量中; 3. 3)根據token值獲得服務動態(tài)調用依賴關系。
[0016] 按上述方案,所述步驟3)中,標識每個任務的服務組合的具體步驟包括: 3. 4)選取具有相同數值的token的服務,該服務組合共同完成某個任務; 3. 5)根據任務形成的動態(tài)服務組合過程,可以通過token進行查詢后,進行迭代運算 得到每個任務的服務組合. 按上述方案,所述步驟5)中對起源日志文件進行數據處理包括:讀取服務起源日志 記錄,檢查是否符合當前的服務起源數據規(guī)范。
[0017] 按上述方案,所述步驟5)中對起源日志文件進行數據處理包括: 檢查起源數據信息的完整性,丟棄不符合要求的數據,然后把符合要求的服務起源數 據規(guī)范化,然后插入數據庫;將起源日志匯聚和存儲于云數據庫。這種結構實現了采集的可 擴展性。
[0018] 按上述方案,所述步驟3)中服務調用攔截器攔截服務調用請求時,根據不同的服 務調用頻率,確定服務調用攔截器的攔截頻率。
[0019] 一種云服務起源數據的捕獲裝置,包括: 攔截器生成模塊,用于根據服務框架和調用協(xié)議生成服務調用攔截器; 攔截器內置模塊,用于將服務調用攔截器內置在服務調用協(xié)議中; 數據收集模塊,用于當服務調用發(fā)生時,服務調用攔截器攔截服務調用請求,獲得服務 動態(tài)調用依賴關系,并標識每個任務的服務組合; 起源日志模塊,用于服務調用攔截器按照服務起源數據規(guī)范,根據獲得的服務動態(tài)調 用依賴關系和經過標識的每個任務的服務組合生成并輸出起源日志文件; 數據存儲模塊,用于對起源日志文件進行數據處理后,存儲在云數據庫中。
[0020] 本發(fā)明產生的有益效果是: 1. 通過服務狀態(tài)和依賴的監(jiān)控,捕獲服務的執(zhí)行狀態(tài)和路徑為云服務運維和管理提供 有效的技術支撐; 2. 根據不同的服務調用頻率,設計不同的抽樣方法,降低系統(tǒng)開銷; 3. 通過服務起源數據規(guī)范化,實現異構系統(tǒng)服務起源的支持。
【專利附圖】
【附圖說明】
[0021] 下面將結合附圖及實施例對本發(fā)明作進一步說明,附圖中: 圖1是本發(fā)明實施例的方法流程圖; 圖2是本發(fā)明實施例的服務框架CXF下服務調用攔截器的設計步驟流程圖; 圖3是本發(fā)明實施例的服務框架CXF下服務調用請求獲得服務動態(tài)調用依賴關系的流 程圖; 圖4是本發(fā)明實施例的捕獲實例服務組合示意圖; 圖5是本發(fā)明實施例的捕獲實例中攔截服務輸出的數據集大小對攔截器的影響示意 圖; 圖6是本發(fā)明實施例的捕獲實例中攔截器的耗時示意圖; 圖7是捕獲實例中服務起源日志采集對資源的占用情況示意圖。
【具體實施方式】
[0022] 為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合實施例,對本發(fā)明 進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限 定本發(fā)明。
[0023] 如圖1所示,一種云服務起源數據的捕獲方法,包括以下步驟: 1)根據服務框架和調用協(xié)議設計服務調用攔截器; 服務調用攔截器的設計方法包括以下步驟: 1. 1)創(chuàng)建用于存儲服務起源信息的文件; 1. 2)服務調用者產生一個唯一的token值,作為識別服務動態(tài)依賴的標志; 1. 3)創(chuàng)建用于讀取并存儲服務調用開始時間的參量; 1. 4)創(chuàng)建用于讀取和存儲當前的IP地址的參量; 1.5)創(chuàng)建用于存儲所調用的服務名稱的參量; 1. 6)創(chuàng)建用于存儲所調用的服務的入口參數的參量; 1. 7)上述參量、文件和token值共同構成服務調用攔截器。
[0024] 服務調用者在生成全局唯一的token值,作為識別服務動態(tài)依賴的標志,該token 值和IP地址、時間等服務起源信息植入調用協(xié)議消息的頭部,以開源的服務框架CXF為例, 具體的實現流程如圖2所示。
[0025] 2)將服務調用攔截器內置在服務調用協(xié)議中; 透明性和自動化捕獲程度取決于攔截器的部署位置,一種形式是:Dapper方法把攔截 器部署在庫函數,所有的通過核心庫函數的調用將自動被攔截,具有高透明性,但由于不同 平臺的庫函數差異很大,且不易修改,所以難以支持異構平臺。另一種形式是使用基于應用 程序標記方法,攔截器部署在應用程序,具有很好的靈活性,但是不支持自動捕獲。
[0026] 3)當服務調用發(fā)生時,服務調用攔截器攔截服務調用請求,獲得服務動態(tài)調用依 賴關系,并標識每個任務的服務組合; 3. 1)解析SOAP消息頭部信息; 3. 2)獲取消息頭部信息中的token值,并存儲到本地線程變量中; 3. 3)根據token值獲得服務動態(tài)調用依賴關系; 3. 4)選取具有相同數值的token的服務,該服務組合共同完成某個任務; 3. 5)根據任務形成的動態(tài)服務組合過程,可以通過token進行查詢后,進行迭代運算 得到每個任務的服務組合。
[0027] 在收集攔截器的信息過程中,為了提供對異構系統(tǒng)的支持,采用攔截器和攔截器 管理分離的方式,管理模塊負責所有攔截的注冊、日志收集和處理,攔截器負責捕獲服務起 源并按照規(guī)范輸出日志,可以根據不同的服務協(xié)議設計不同的攔截器,攔截器和管理模塊 是松耦合關系,攔截器運行的策略和方式通過讀取一個XML配置文件實現,該文件由管理 模塊進行管理和維護,通過更新和修改該文件,攔截器實施不同的抽樣策略和執(zhí)行方式。所 有攔截器采用公共標準的數據規(guī)范和傳輸協(xié)議。
[0028] 以開源的服務框架CXF為例,服務調用請求獲得服務動態(tài)調用依賴關系的流程圖 如圖3所示。
[0029] 服務調用攔截器攔截服務調用請求時,根據不同的服務調用頻率,確定服務調用 攔截器的攔截頻率。
[0030] 在云平臺中,熱門的服務往往調用的頻率很高,在很短的時間內容,往往會被調用 成千上萬次,如果攔截每一次的調用,即使單次攔截的時間很短,例如,單次攔截耗時2ms, 但是如果在1秒攔截100次服務調用,則需要耗時2ms*100=200ms=0. 2s,這將給系統(tǒng)帶來較 大的開銷。所以需要設計合適的抽樣策略,降低服務起源捕獲代價。
[0031] 另外一個問題是,服務之間的調用頻率差異巨大,有些非常用服務調用頻率很低, 如果采用統(tǒng)一的調用抽樣策略,要么將丟掉服務調用模式特征,要么將帶來較高的攔截代 價。
[0032] 本實施例中采用了一種分層的抽樣策略,具體為 調用頻率大于100次/秒,抽樣頻率為:向下取整(調用頻率/100)每秒; 調用頻率小于100次/秒,且大于1次/秒,抽樣頻率為:1次每秒; 調用頻率小于1次/秒,抽樣頻率為:根據調用次數抽樣 我們可以根據服務調用頻率的實際情況,修改抽樣策略,使之在降低采集代價的同時, 保持服務起源的模式特征。
[0033] 4)服務調用攔截器按照服務起源數據規(guī)范,根據獲得的服務動態(tài)調用依賴關系和 經過標識的每個任務的服務組合生成并輸出起源日志文件;其中服務起源數據規(guī)范為一個 9元組: BasicProv (token, InvokingService, Servicelnvoked, location, elapsed time, timestamp, input, output, status);服務起源的數據規(guī)范參數含義如下: Token :-個32位的字符串,用于標識一個動態(tài)的組合任務 InvokingService :服務調用者,也可以稱為服務消費者。數據格式為一個32位的字符 串 Servicelnvoked :服務被調用者,也可以稱為服務提供者。數據格式為一個32位的字 符串。
[0034] Location:服務調用發(fā)生的位置,在云服務環(huán)境,主要是IP地址。
[0035] Elapsed time :服務調用的耗時,該耗時為從服務調用者的視角看,完成一次服務 調用所需要的時間,包含了被調用服務的嵌套執(zhí)行時間。數據格式為一個8位的整型,單位 為毫秒。
[0036] Timestamp :服務調用事件發(fā)生的時間戳,格式為年/月/日小時/分鐘/秒/毫 秒 Input :服務調用的輸入參數,數據存儲格式為32位的字符串。
[0037] Output :服務調用的輸出數據文件,一般為一個XML對象,或者一個json數據對 象。
[0038] Status :服務執(zhí)行的狀態(tài),數據格式為一個布爾值,1表示成功,0表示失敗。
[0039] 5)將起源日志文件進行數據處理后,存儲在云數據庫中。
[0040] 讀取服務起源日志記錄,檢查是否符合當前的服務起源數據規(guī)范,用戶可以根據 需要設置服務起源數據的規(guī)范要求,例如,當不需要分布式debug的時候,可以不攔截服務 的輸入和輸出,在進行格式檢查的時候不檢查相關信息。
[0041] 對于不符合要求的數據(包括信息不完整、超出位數長度等)進行丟棄,不插入遠 端數據庫; 對于符合要求的數據,調用插入數據庫模塊,把信息插入到遠程數據庫中; 對系統(tǒng)支持異構的服務起源數據,如果當前數據標簽和名稱不符合數據規(guī)范,則采用 數據映射的方式實現語義轉換,具體的方式為,建立待轉化數據信息字段名稱和服務起源 數據格式字段名稱的映射關系,在插入數據之前,進行映射,然后根據匹配的信息插入到數 據庫中; 將服務起源日志存儲到服務所在的本地服務器上,通過日志采集工具,實現數據的讀 取、傳輸和插入數據庫。
[0042] 一種云服務起源數據的捕獲裝置,包括: 攔截器生成模塊,用于根據服務框架和調用協(xié)議生成服務調用攔截器; 攔截器內置模塊,用于將服務調用攔截器內置在服務調用協(xié)議中; 數據收集模塊,用于當服務調用發(fā)生時,服務調用攔截器攔截服務調用請求,獲得服務 動態(tài)調用依賴關系,并標識每個任務的服務組合; 起源日志模塊,用于服務調用攔截器按照服務起源數據規(guī)范,根據獲得的服務動態(tài)調 用依賴關系和經過標識的每個任務的服務組合生成并輸出起源日志文件; 數據存儲模塊,用于對起源日志文件進行數據處理后,存儲在云數據庫中。
[0043] 以下使用一個簡單的捕獲實例對本捕獲方法的有效性進行說明: 一個簡單的捕獲實例: 某學校的教務系統(tǒng)中的選課業(yè)務,由以下服務組合而成,如圖4所示,該服務運行于開 源的webservice框架CXF,具體的攔截步驟為: (1)在服務框架CXF中部署攔截器模塊 (2 )在服務發(fā)布的時候,引用服務攔截器模塊 (3) 當服務調用發(fā)生時候,自動產生如下的服務起源數據,如下表所示:
【權利要求】
1. 一種云服務起源數據的捕獲方法,其特征在于,包括以下步驟: 1) 根據服務框架和調用協(xié)議設計服務調用攔截器; 2) 將服務調用攔截器內置在服務調用協(xié)議中; 3) 當服務調用發(fā)生時,服務調用攔截器攔截服務調用請求,獲得服務動態(tài)調用依賴關 系,并標識每個任務的服務組合; 4) 服務調用攔截器按照服務起源數據規(guī)范,根據獲得的服務動態(tài)調用依賴關系和經過 標識的每個任務的服務組合生成并輸出起源日志文件; 5) 將起源日志文件進行數據處理后,存儲在云數據庫中。
2. 根據權利要求1所述的云服務起源數據的捕獲方法,其特征在于,所述步驟4)中,其 中服務起源數據規(guī)范為一個9元組: BasicProv (token, InvokingService, Servicelnvoked, location, elapsed time, timestamp, input, output, status); 其中Token為一個32位的字符串,用于標識一個動態(tài)的組合任務; InvokingService為服務調用者,也稱為服務消費者,其數據格式為一個32位的字符 串; Servicelnvoked為服務被調用者,也稱為服務提供者,其數據格式為一個32位的字符 串; Location為服務調用發(fā)生的位置,在云服務環(huán)境,為IP地址; Elapsed time為服務調用的耗時,該耗時為從服務調用者的視角看,完成一次服務調 用所需要的時間,包含了被調用服務的嵌套執(zhí)行時間,其數據格式為一個8位的整型; Timestamp為服務調用事件發(fā)生的時間戳; Input為服務調用的輸入參數,數據存儲格式為32位的字符串; Output為服務調用的輸出數據文件,為一個XML對象,或者一個json數據對象; Status為服務執(zhí)行的狀態(tài),數據格式為一個布爾值,1表不成功,0表不失敗。
3. 根據權利要求1所述的云服務起源數據的捕獲方法,其特征在于,所述步驟1)中服 務調用攔截器的設計方法包括以下步驟: 1. 1)創(chuàng)建用于存儲服務起源信息的文件; 1. 2)服務調用者產生一個唯一的token值,作為識別服務動態(tài)依賴的標志; 1. 3)創(chuàng)建用于讀取并存儲服務調用開始時間的參量; 1. 4)創(chuàng)建用于讀取和存儲當前的IP地址的參量; 1.5)創(chuàng)建用于存儲所調用的服務名稱的參量; 1. 6)創(chuàng)建用于存儲所調用的服務的入口參數的參量; 1. 7)上述參量、文件和token值共同構成服務調用攔截器。
4. 根據權利要求3所述的云服務起源數據的捕獲方法,其特征在于,所述唯一 token值 根據時間和網卡產生。
5. 根據權利要求1所述的云服務起源數據的捕獲方法,其特征在于,所述步驟3)中,通 過服務調用請求獲得服務動態(tài)調用依賴關系的具體步驟為: 3. 1)解析服務調用協(xié)議的頭部信息; 3. 2)獲取頭部信息中的token值,并存儲到本地線程變量中; 3. 3)根據token值獲得服務動態(tài)調用依賴關系。
6. 根據權利要求1所述的云服務起源數據的捕獲方法,其特征在于,所述步驟3)中,標 識每個任務的服務組合的具體步驟包括: 3. 4)選取具有相同數值的token的服務,該服務組合共同完成某個任務; 3. 5)根據任務形成的動態(tài)服務組合過程,可以通過token進行查詢后,進行迭代運算 得到每個任務的服務組合。
7. 根據權利要求1所述的云服務起源數據的捕獲方法,其特征在于,所述步驟5)中對 起源日志文件進行數據處理包括:讀取服務起源日志記錄,檢查是否符合當前的服務起源 數據規(guī)范。
8. 根據權利要求7所述的云服務起源數據的捕獲方法,其特征在于,所述步驟5)中對 起源日志文件進行數據處理包括: 檢查起源數據信息的完整性,丟棄不符合要求的數據,然后把符合要求的起源數據規(guī) 范化,然后插入數據庫;將起源日志匯聚和存儲于云數據庫。
9. 根據權利要求1所述的云服務起源數據的捕獲方法,其特征在于,所述步驟3)中服 務調用攔截器攔截服務調用請求時,根據不同的服務調用頻率,確定服務調用攔截器的攔 截頻率。
10. -種云服務起源數據的捕獲裝置,包括: 攔截器生成模塊,用于根據服務框架和調用協(xié)議生成服務調用攔截器; 攔截器內置模塊,用于將服務調用攔截器內置在服務調用協(xié)議中; 數據收集模塊,用于當服務調用發(fā)生時,服務調用攔截器攔截服務調用請求,獲得服務 動態(tài)調用依賴關系,并標識每個任務的服務組合; 起源日志模塊,用于服務調用攔截器按照服務起源數據規(guī)范,根據獲得的服務動態(tài)調 用依賴關系和經過標識的每個任務的服務組合生成并輸出起源日志文件; 數據存儲模塊,用于對起源日志文件進行數據處理后,存儲在云數據庫中。
【文檔編號】H04L29/08GK104092755SQ201410323340
【公開日】2014年10月8日 申請日期:2014年7月7日 優(yōu)先權日:2014年7月7日
【發(fā)明者】李濤 申請人:武漢科技大學