Erlang的熱更新

2021-10-01 14:06:16 字數 1065 閱讀 3455

熱更步驟

1.建立熱更模組介面

2.替換編譯檔案.beam

3.執行熱更

主要實現方法是使用code**服務函式

code:purge(mod),

清除模組的**,清除並標記為舊版本**

code:load_file(mod).

載入乙個模組

由於模組載入之後存在虛擬機器 可直接替換bin資料夾中的mod.beam檔案 執行跟新

當舊的mod:a-old()執行結束 會切到mod:a-new() 所以不用擔心衝突

運維後台通過tcp請求熱更和引數

由於使用tcp/ip 後台傳參(即熱更模組名稱已轉為二進位制,需進行轉換為原子,且後台執行熱更需要返回結果 如果熱更檔案過多 直接呼叫fun()可能後台需要等待很長時間 所以需要用到spawn)

//入口

ref2 = lib_gm_command:process_binary(socket, binary),

lib_send:send_one(socket, ref2);

//處理二進位制獲取引數(根絕自己和後台的規則處理 此處忽略)

spawn(lib_update,update_file,[filename]),//filename熱更檔案list

<<>>; //即ref2

//熱更操作

updatefilelist = lists:map(fun(e)->

binary_to_atom(e,latin1)

end,re:split(filelist,"\\,")),//二進位制轉原子 分割

load(updatefilelist);//執行熱更

//遞迴迴圈

load() -> ok;

load([filename | t]) ->

code:purge(filename ),

code:load_file(filename ).

info("loaded: ~w", [filename]),

load(t).

war包熱更新 electron 熱更新實現方式

1 electron是乙個外殼 html js css 資料報 按照官方的邏輯,採用electron builder的時候 會直接打包成asar 如果單單是打包html檔案也就算了,關鍵裡面還打包的node module 整整100mb 我只更新個html,不可能對node module重新打包吧。...

關於mui的熱更新。

官方給出的文件講解的很少,所以自己便開始研究了。首先mui中的update.js很簡單。自帶的主要 如下 var server 獲取公升級描述檔案伺服器位址,官方的 為 內容為 官方給出的服務端位址為 內容模板為 另外一種h5 比較複雜,是在js裡面判斷是否需要更新,同時可操作性更強。完整 如下 y...

war包熱更新 專案優化之熱更新

方案 不加固的apk 1 支援熱更新的手機 2 不支援熱更新的手機 加固的apk web為了保證不支援熱更新的手機,也能公升級修復bug,並保證版本號不變,所以每次熱更新,後台都必選管理所有渠道的apk,也即每次熱更新都必須提供所有渠道的apk。每次更新後台補丁時,都需要提供的檔案 1 通用補丁檔案...