[發(fā)明專利]一種場景驅動的單體系統(tǒng)微服務拆分方法在審
| 申請?zhí)枺?/td> | 202010335919.1 | 申請日: | 2020-04-25 |
| 公開(公告)號: | CN111651451A | 公開(公告)日: | 2020-09-11 |
| 發(fā)明(設計)人: | 彭鑫;丁丹 | 申請(專利權)人: | 復旦大學 |
| 主分類號: | G06F16/22 | 分類號: | G06F16/22;G06F16/28;G06F16/18;G06F11/36 |
| 代理公司: | 上海正旦專利代理有限公司 31200 | 代理人: | 陸飛;陸尤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 場景 驅動 單體 系統(tǒng) 微服 拆分 方法 | ||
1.一種場景驅動的單體系統(tǒng)微服務拆分方法,其特征在于,首先通過監(jiān)控典型應用場景測試用例的執(zhí)行,動態(tài)分析獲取單體系統(tǒng)運行時的方法調用和數(shù)據(jù)庫操作信息,生成系統(tǒng)的數(shù)據(jù)訪問軌跡圖;然后根據(jù)數(shù)據(jù)訪問軌跡圖對底層的數(shù)據(jù)表圖進行加權和聚合,基于數(shù)據(jù)表之間的關聯(lián)分析生成數(shù)據(jù)庫拆分方案;再在數(shù)據(jù)訪問軌跡圖上自底向上進行搜索,產生相應的代碼模塊拆分方案;具體步驟如下:
(1)準備測試用例:準備一組覆蓋了系統(tǒng)主要業(yè)務流程和功能的用戶使用場景級別的測試用例;一個用例對應于一個用戶場景,一個場景包含若干個界面輸入或點擊操作;每個測試用例對應一個用例權重,權重大小根據(jù)對應場景的重要度進行設置;
(2)構建數(shù)據(jù)訪問軌跡圖:根據(jù)原單體系統(tǒng)的運行時數(shù)據(jù)構建數(shù)據(jù)訪問軌跡圖;
(3)生成微服務拆分方案:根據(jù)數(shù)據(jù)訪問軌跡圖,結合微服務化拆分有關的多個考量維度,生成一張無向加權的數(shù)據(jù)表圖,然后通過對數(shù)據(jù)表進行聚類劃分,得到數(shù)據(jù)表的劃分方案,最后在數(shù)據(jù)訪問軌跡圖中自底向上進行搜索,獲取與數(shù)據(jù)表拆分結果相符合的代碼拆分方案;
(4)反饋調整:用戶反饋迭代式地對結果做出微調,從而起到間接優(yōu)化權重矩陣的作用,令最終的拆分方案更符合實際需求。
2.根據(jù)權利要求1所述的單體系統(tǒng)微服務拆分方法,其特征在于,步驟(2)所述構建數(shù)據(jù)訪問軌跡圖的具體流程為:
1)在單體系統(tǒng)中配置監(jiān)控工具,順序執(zhí)行測試用例,每次執(zhí)行測試用例時輸入對應的場景名與權重;
2)獲取系統(tǒng)運行測試用例期間的方法調用和數(shù)據(jù)訪問日志,并將其與用戶場景相關聯(lián),即每條監(jiān)控日志都記錄了其對應的場景名、場景標識和場景權重;日志共有三種不同的類型,分別用于記錄方法調用時的方法簽名、執(zhí)行數(shù)據(jù)庫訪問時的SQL語句和數(shù)據(jù)操作時對應的數(shù)據(jù)表;
3)根據(jù)監(jiān)控日志構建數(shù)據(jù)訪問軌跡圖,圖中每個場景關聯(lián)若干請求,每個請求對應一條方法調用鏈;一條方法調用鏈是若干方法的執(zhí)行序列,其中有些方法關聯(lián)SQL 節(jié)點,這說明該方法執(zhí)行過程中調用了這些SQL 語句;而SQL 節(jié)點關聯(lián)若干個數(shù)據(jù)表節(jié)點,代表這條SQL 語句在實際執(zhí)行過程中訪問了這些數(shù)據(jù)表中的數(shù)據(jù)。
3.根據(jù)權利要求2所述的單體系統(tǒng)微服務拆分方法,其特征在于,步驟(3)所述生成微服務拆分方案的具體流程為:
1)根據(jù)數(shù)據(jù)訪問軌跡圖,加權累加任意兩個數(shù)據(jù)表出現(xiàn)在同一條SQL語句、同一條方法調用鏈或同一個用戶場景下的場景權重,得到數(shù)據(jù)表之間的關聯(lián)度矩陣;兩數(shù)據(jù)表之間的關聯(lián)權重越大,越傾向于將它們劃分到同一個微服務中;
2)計算每個數(shù)據(jù)表分別在所有場景、方法調用鏈和SQL語句中出現(xiàn)的比例,將這三個比例加權累加得到數(shù)據(jù)表的數(shù)據(jù)共享度;按照0.08到0.3的比例提取共享度高的數(shù)據(jù)表,再分別從SQL、調用鏈和場景三個級別計算提取出的共享表之間的數(shù)據(jù)依賴度,將彼此間數(shù)據(jù)依賴度滿足共享群組提取條件的共享表劃分到同一個共享群組;以此得到若干個共享群組,這些群組傾向于單獨提取出來作為一個微服務;
3)對數(shù)據(jù)表關聯(lián)度矩陣做出調整,對于連接同一個共享群組中兩張表的邊,保持比較大的權重,增加它們被劃分到同一個微服務的概率;削減與該表相連的其它邊的權重,降低該邊相連的兩張表被劃分到同一個微服務的概率;
4)對數(shù)據(jù)表關聯(lián)度矩陣進行聚類劃分,同時結合拆分開銷,選擇最優(yōu)的數(shù)據(jù)庫拆分方案;
5)對于每個服務中的數(shù)據(jù)表,在數(shù)據(jù)訪問軌跡圖中順著調用關系自底向上搜索訪問這些數(shù)據(jù)表的SQL 語句、方法和類節(jié)點,得到和數(shù)據(jù)庫拆分對應的代碼拆分方案;最終的拆分方案包含每個微服務所含的數(shù)據(jù)表、SQL語句、方法和類,并標識出需要進行拆分的SQL語句、方法和類;
所述數(shù)據(jù)表之間的關聯(lián)度,是指兩數(shù)據(jù)表在場景/方法調用鏈/SQL層次的數(shù)據(jù)關聯(lián)度分別為同時操作了這兩張表的場景/方法調用鏈/SQL語句的累加權重與操作其中任意一張表的場景/方法調用鏈/SQL語句的累加權重之比例;
所述數(shù)據(jù)共享度,是指單個數(shù)據(jù)表在場景/方法調用鏈/SQL層次的數(shù)據(jù)共享度分別為操作該表的場景/方法調用鏈/SQL語句數(shù)量占總場景/方法調用鏈/SQL語句數(shù)量的比例;
所述數(shù)據(jù)依賴度,是指表A對表B的場景/方法調用鏈/SQL依賴度分別為同時操作A、B兩張表的場景/方法調用鏈/SQL語句數(shù)量占操作表A的場景/方法調用鏈/SQL語句數(shù)量的比例。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于復旦大學,未經(jīng)復旦大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010335919.1/1.html,轉載請聲明來源鉆瓜專利網(wǎng)。





