做落盤,為了保證時點性,最有效的方法就是在一瞬間把當前的進程的内存複制一份新的,對這份新的内存進行持久化,同時老的内存可以繼續接收客戶端的命令。這個想法本身思路是對的,但是存在效率和空間占用問題:
那有沒有辦法可以讓這個“内存複制”更快呢?答案是有的,就是利用操作系統fork進程的時候的特性 - “内存一緻”來達到
同時Linux還利用了寫時複制(Copy on Write)技術,在fork子進程的時候并沒有立即對内存進行拷貝,僅僅拷貝了一份映射關系,讓他們暫時指向同一個内存空間。而當進程對這塊内存空間有寫操作時,才會真正複制内存,而且是以頁為單位。
這樣我們就做到了:
又因為在持久化過程中,對内存的寫操作往往很少,大多數都是不變的,這在使用COW的情況,效率會更加高
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!