[發(fā)明專利]一種場景驅(qū)動的單體系統(tǒng)微服務(wù)拆分方法在審
| 申請?zhí)枺?/td> | 202010335919.1 | 申請日: | 2020-04-25 |
| 公開(公告)號: | CN111651451A | 公開(公告)日: | 2020-09-11 |
| 發(fā)明(設(shè)計)人: | 彭鑫;丁丹 | 申請(專利權(quán))人: | 復旦大學 |
| 主分類號: | G06F16/22 | 分類號: | G06F16/22;G06F16/28;G06F16/18;G06F11/36 |
| 代理公司: | 上海正旦專利代理有限公司 31200 | 代理人: | 陸飛;陸尤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 場景 驅(qū)動 單體 系統(tǒng) 微服 拆分 方法 | ||
本發(fā)明屬于軟件工程與微服務(wù)技術(shù)領(lǐng)域,具體為一種場景驅(qū)動的單體系統(tǒng)微服務(wù)拆分方法。本發(fā)明方法,首先通過監(jiān)控典型應(yīng)用場景測試用例的執(zhí)行,動態(tài)分析獲取單體系統(tǒng)運行時的方法調(diào)用和數(shù)據(jù)庫操作信息,生成系統(tǒng)的數(shù)據(jù)訪問軌跡圖;然后對底層的數(shù)據(jù)表圖進行加權(quán)和聚合,基于數(shù)據(jù)表之間的關(guān)聯(lián)分析生成數(shù)據(jù)庫拆分方案;再在數(shù)據(jù)訪問軌跡圖上進行搜索,產(chǎn)生相應(yīng)的代碼模塊拆分方案。本發(fā)明以半自動化的方式,從現(xiàn)有代碼和數(shù)據(jù)模式出發(fā),將業(yè)務(wù)流程、方法調(diào)用鏈和數(shù)據(jù)表三者進行關(guān)聯(lián),使業(yè)務(wù)的獨立性、代碼的內(nèi)聚/耦合性、數(shù)據(jù)間的關(guān)聯(lián)度都成為數(shù)據(jù)庫拆分依據(jù),生成代碼模塊的拆分方案;可顯著提升微服務(wù)拆分的決策速度,減輕開發(fā)人員決策負擔。
技術(shù)領(lǐng)域
本發(fā)明屬于軟件工程與微服務(wù)技術(shù)領(lǐng)域,具體涉種單體系統(tǒng)微服務(wù)拆分方法。
背景技術(shù)
微服務(wù)是將一個大型復雜的軟件系統(tǒng)分解成一組獨立運行、以輕量級通信機制進行交互的相對較小的服務(wù)。這些服務(wù)圍繞業(yè)務(wù)功能進行構(gòu)建,可以獨立開發(fā)、測試、部署和更新,以此帶來的好處包括系統(tǒng)架構(gòu)的解耦、單個服務(wù)的交付周期縮短、技術(shù)選型更靈活、可擴展性更好、復用性更高等等。
在企業(yè)實踐中,許多微服務(wù)系統(tǒng)都是在單體架構(gòu)的遺留系統(tǒng)基礎(chǔ)上通過微服務(wù)拆分和改造形成的,其中的拆分決策(尤其是數(shù)據(jù)庫拆分)對于微服務(wù)系統(tǒng)的架構(gòu)質(zhì)量有著很大的影響。前單體系統(tǒng)的微服務(wù)拆分決策主要依賴于架構(gòu)人員和開發(fā)人員的分析和經(jīng)驗,整個過程成本高、耗時長、自動化程度低,相關(guān)的研究工作主要集中在經(jīng)驗總結(jié)和方法論上。已有的工具并不支持數(shù)據(jù)庫的拆分且代碼拆分粒度過大,同時需要人工分析或輸入的數(shù)據(jù)量過多、不適用于大型單體系統(tǒng)的拆分。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種可顯著提升微服務(wù)拆分決策速度的場景驅(qū)動的單體系統(tǒng)微服務(wù)拆分方法。
本發(fā)明提出的場景驅(qū)動的單體系統(tǒng)微服務(wù)拆分方法,基于測試驅(qū)動的理念,首先通過監(jiān)控典型應(yīng)用場景測試用例的執(zhí)行,動態(tài)分析獲取單體系統(tǒng)運行時的方法調(diào)用和數(shù)據(jù)庫操作信息,生成系統(tǒng)的數(shù)據(jù)訪問軌跡圖;然后根據(jù)數(shù)據(jù)訪問軌跡圖對底層的數(shù)據(jù)表圖進行加權(quán)和聚合,基于數(shù)據(jù)表之間的關(guān)聯(lián)分析生成數(shù)據(jù)庫拆分方案;再在數(shù)據(jù)訪問軌跡圖上自底向上進行搜索,產(chǎn)生相應(yīng)的代碼模塊拆分方案。整體流程如圖1所示,具體步驟如下。
(1)準備測試用例。即準備一組覆蓋了系統(tǒng)主要業(yè)務(wù)流程和功能的用戶使用場景級別的測試用例;一個用例對應(yīng)于一個用戶場景,一個場景包含若干個界面輸入或點擊操作;每個測試用例對應(yīng)一個用例權(quán)重,權(quán)重大小根據(jù)對應(yīng)場景的重要度進行設(shè)置。
(2)構(gòu)建數(shù)據(jù)訪問軌跡圖。根據(jù)原單體系統(tǒng)的運行時數(shù)據(jù)構(gòu)建數(shù)據(jù)訪問軌跡圖,如圖2所示,具體包括以下子步驟:
1)在單體系統(tǒng)中配置監(jiān)控工具,順序執(zhí)行測試用例,每次執(zhí)行測試用例時輸入對應(yīng)的場景名與權(quán)重;
2)獲取系統(tǒng)運行測試用例期間的方法調(diào)用和數(shù)據(jù)訪問日志,并將其與用戶場景相關(guān)聯(lián),即每條監(jiān)控日志都記錄了其對應(yīng)的場景名、場景標識和場景權(quán)重;日志共有三種不同的類型,分別用于記錄方法調(diào)用時的方法簽名、執(zhí)行數(shù)據(jù)庫訪問時的SQL(Structured QueryLanguage,結(jié)構(gòu)化查詢語言)語句和數(shù)據(jù)操作時對應(yīng)的數(shù)據(jù)表;
3)根據(jù)監(jiān)控日志構(gòu)建數(shù)據(jù)訪問軌跡圖,如圖2所示,圖中每個場景關(guān)聯(lián)若干請求,每個請求對應(yīng)一條方法調(diào)用鏈;一條方法調(diào)用鏈是若干方法的執(zhí)行序列,其中有些方法會關(guān)聯(lián)SQL 節(jié)點,這說明該方法執(zhí)行過程中調(diào)用了這些SQL 語句;而SQL 節(jié)點會關(guān)聯(lián)若干個數(shù)據(jù)表節(jié)點(在圖2中以虛線箭頭表示),代表這條SQL 語句在實際執(zhí)行過程中訪問了這些數(shù)據(jù)表中的數(shù)據(jù)。
(3)生成微服務(wù)拆分方案。根據(jù)數(shù)據(jù)訪問軌跡圖,結(jié)合微服務(wù)化拆分有關(guān)的多個考量維度,生成一張無向加權(quán)的數(shù)據(jù)表圖,然后通過對數(shù)據(jù)表進行聚類劃分,得到數(shù)據(jù)表的劃分方案,最后在數(shù)據(jù)訪問軌跡圖中自底向上進行搜索,獲取與數(shù)據(jù)表拆分結(jié)果相符合的代碼拆分方案。具體包括以下子步驟:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于復旦大學,未經(jīng)復旦大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010335919.1/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





