亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解Sersync服務器同步程序項目與設計框架

發布時間:2021-11-22 18:07:44 來源:億速云 閱讀:129 作者:柒染 欄目:云計算

本篇文章為大家展示了怎么理解Sersync服務器同步程序項目與設計框架,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

本項目利用inotify與rsync對服務器進行實時同步,其中inotify用于監控文件系統事件,rsync是目前廣泛使用的同步算法,其優點是只對文件不同的部分進行操作,所以其優勢大大超過使用掛接文件系統的方式進行鏡像同步。  
目前使用的比較多的同步程序版本是inotify-tools,另外一個是google開源項目Openduckbill(依賴于inotify-tools),這兩個都是基于腳本語言編寫的,其設計思路同樣是采用inotify與rsync命令。 相比較上面兩個項目,本項目優點是:  
1.sersync是使用c++編寫,而且對linux系統文件系統產生的臨時文件和重復的文件操作進行過濾(我稍后會提到),所以在結合rsync同步的時候,節省了運行時耗和網絡資源。因此更快。  
2.相比較上面兩個項目,sersync配置起來很簡單:在http://code.google.com/p/sersync/downloads/list 處下載源碼(分為32版本,與64位版本),其中bin目錄下已經有我編譯好的2進制文件,配合bin目錄下的xml文件直接使用即可。  
3.另外本項目相比較其他腳本開源項目,使用多線程進行同步,尤其在同步較大文件時,能夠保證多個服務器實時保持同步狀態。  
4.本項目自帶出錯處理機制,通過失敗隊列對出錯的文件重新出錯,如果仍舊失敗,則每10個小時對同步失敗的文件重新同步。  
5.本項目自帶crontab功能,只需在xml配置文件中開啟,即可按您的要求,隔一段時間整體同步一次。  
6.本項目自帶socket與http協議擴展,滿足您二次開發的需要。  
基本架構:

怎么理解Sersync服務器同步程序項目與設計框架

設計簡析

    如上圖所示,線程組線程是等待線程隊列的守護線程,當隊列中有數據的時候,線程組守護線程逐個喚醒,當隊列中inotify事件交多的時候就會被全部喚醒一起工作。這樣設計的目的是能夠同時處理多個inotify事件,重發利用服務器的并發能力(核數*2+2)。

    之所以稱之為線程組線程,是因為每個線程在工作的時候,會根據服務器的數量建立子線程,子線程可以保證所有的文件與各個服務器同時同步,當要同步的文件較大的時候,這樣設計可以保證各個遠程服務器可以同時獲得要同步的文件。

    服務線程的作用有三個,首先是處理同步失敗的文件,將這些文件再次同步,對于再次同步失敗的文件會生成rsync_fail_log.sh腳本,記錄失敗的事件。同時每隔10個小時執行腳本一次,同時清空腳本。服務線程的第三個作用是crontab功能,可以每隔一定時間,將所有路徑整體同步一次。

    過濾隊列的建立是為了過濾短時間內產生的重復的inotify信息,例如在刪除文件夾得時候,inotify就會同時產生刪除文件夾里的文件與刪除文件夾得事件,通過過濾隊列當刪除文件夾事件產生的時候,會將之前加入隊列的刪除文件的事件全部過濾掉,這樣只產生一條事件減輕了同步的負擔。同時對于修改文件的操作的時候,會產生臨時文件與重復操作。

舉例:

當我們在vi的一個test文件,進行wq操作的時候會產生如下事件:

怎么理解Sersync服務器同步程序項目與設計框架

即使把"."開頭與"~"結尾的世界過濾了,對于test文件仍舊有3次操作,分別是刪除,創建與保存,通過過濾隊列,就只剩下一個事件,一定程度上也提高了效率。

過濾隊列第二個作用,即當你在本機刪除目錄的時候,假設你刪除一個有5個文件的目錄,inotify會產生6個事件,分別是5個文件刪除事件,和一個刪除目錄事件,如果使用過濾隊列,正常情況下會只產生一個刪除目錄的事件,大大減少了rsync通信次數。(當然,這不是絕對的。如果這6個事件分多次讀到進入隊列,那么可能還沒來得及過濾,就已經被同步線程從隊列中取走同步了。但一定程度上可以減少刪除文件夾得同步通信次數)。

過濾隊列的第三個作用,可以過濾監控目錄下的文件夾,如果不想同步目錄下的一些文件夾,或者一些后綴的文件。對于不需監控的子文件夾,在inotify啟動時候remove掉監控,對于不需監控子文件,產生的文件事件就會從在入同步隊列前過濾掉。如果使用rsync用--exclude, 這樣雖然也可以過濾,但還是與rsync守護進程進行了一次交互。

上述內容就是怎么理解Sersync服務器同步程序項目與設計框架,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沙雅县| 宁南县| 马公市| 武强县| 舞阳县| 巴彦县| 阿合奇县| 岑溪市| 靖宇县| 资中县| 平原县| 融水| 密山市| 日土县| 朝阳市| 固始县| 浏阳市| 泸州市| 中山市| 金昌市| 呼玛县| 昌图县| 扬州市| 买车| 左贡县| 桐梓县| 浦县| 江津市| 萝北县| 大兴区| 日照市| 信丰县| 建昌县| 尼玛县| 江源县| 大渡口区| 吉安市| 攀枝花市| 邵武市| 湘潭县| 扎囊县|