[發明專利]一種go服務器熱更新方法及相關設備在審
| 申請號: | 202110494403.6 | 申請日: | 2021-05-07 |
| 公開(公告)號: | CN113342386A | 公開(公告)日: | 2021-09-03 |
| 發明(設計)人: | 熊秭燚;吳柳 | 申請(專利權)人: | 武漢虛咖科技有限公司 |
| 主分類號: | G06F8/656 | 分類號: | G06F8/656 |
| 代理公司: | 北京眾達德權知識產權代理有限公司 11570 | 代理人: | 張曉冬 |
| 地址: | 430000 湖北省武漢市東湖新技術開發區流芳街大舒村工業項目(*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 go 服務器 更新 方法 相關 設備 | ||
本發明實施例公開了一種go服務器熱更新方法及相關設備,該方法包括:獲取更新信息;基于所述待執行文件生成進程;通過在所述進程內加載所述待更新網絡進程交互的基礎數據得到目標進程;基于所述交互節點將所述待更新網絡進程替換為所述目標進程,完成所述go服務器熱更新的過程。通過本發明實施例的技術方案,解決了現有技術中在更新go服務器時,需要重啟服務器,斷開客戶端與所述服務器的連接,造成數據丟失或者引起漏洞的情況,影響用戶體驗的問題。
技術領域
本發明實施例涉及服務器維護技術領域,尤其涉及一種go服務器熱更新方法及相關設備。
背景技術
現有的技術方案在go語言編寫的服務器進行更新時,采用服務器官方提供的plugin方案進行熱更新,但是plugin方案是支持將代碼分別編譯為多個動態庫,動態加載后運行,這樣在熱更新時,用戶終端使用正在更新的服務器還是不會很流暢,同時,plugin方案對于編程人員的編程要求很高,而不采用plugin方案對go語言編寫的服務器進行更新只能重新編譯一個新的程序,替換原有程序,通過重啟完成替換過程,這種情況下如果go服務器有多個客戶端在鏈接,那么容易導致在重啟的這樣段時間,用戶丟失數據或者導致一些嚴重的bug的問題。
發明內容
本發明實施例提供了一種go服務器熱更新方法及相關設備,避免了go服務器熱更新影響用戶體驗的問題。
第一方面,本發明實施例提供了一種go服務器熱更新方法,用于服務器端,包括:
獲取更新信息,其中,所述更新信息包括待執行文件和待更新網絡進程交互信息,所述更新網絡進程交互信息為待更新的服務器端網絡進程與用戶終端的交互信息,所述待更新網絡進程交互信息包括對應所述待更新網絡進程交互信息的交互節點和所述待更新網絡進程交互的基礎數據,所述交互節點為所述待更新網絡進程進行數據交互時的數據節點;
基于所述待執行文件生成進程;
通過在所述進程內加載所述待更新網絡進程交互的基礎數據得到目標進程;
基于所述交互節點將所述待更新網絡進程替換為所述目標進程,完成所述go服務器熱更新的過程。
可選的,所述獲取更新信息的步驟,包括:
獲取用戶指令信息,其中,所述用戶指令信息為用戶輸入的控制信息;
獲取所述控制信息的類型數據;
若所述控制信息的類型數據不為更新類型數據,則不獲取當前網絡進程的交互信息;
若所述類型數據為更新類型數據,則獲取所述更新信息,所述更新信息包括所述待執行文件和所述待更新網絡進程交互信息,所述待更新網絡進程交互信息包括對應所述待更新網絡進程交互信息的交互節點和所述待更新網絡進程交互的基礎數據。
可選的,所述獲取用戶指令信息的步驟,包括:
采用監聽的方式獲取所述用戶指令信息。
可選的,在所述通過在所述進程內加載所述待更新網絡進程交互的基礎數據,得到目標進程的步驟之前,還包括:
基于預設參數運行所述進程,其中,所述預設參數為初始執行參數;
基于所述初始執行參數對所述進程進行初始化,得到初始進程。
可選的,所述方法還包括:
將所述待更新網絡進程交互信息以文件的形式存儲至服務器的內存內。
可選的,所述方法還包括:
獲取所述目標進程的狀態信息,其中,所述狀態信息包括停止狀態數據和運行狀態數據;
若所述目標進程的狀態信息為停止狀態數據,則維持當前網絡進程的運行狀態;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于武漢虛咖科技有限公司,未經武漢虛咖科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110494403.6/2.html,轉載請聲明來源鉆瓜專利網。





