docker解決數據存儲問題的方案

        如今docker在雲計算領域發展的勢頭很猛,各個公司不論大小都開始研究這個開源工具和技術,圍繞docker的開源項目和創業公司也多如牛毛,就是一個簡單管理container的web ui都有不少開源項目。不過仍是一我的說的好,docker必需要是集羣纔好玩,並且越大越好玩。固然這是從玩技術的人眼中看待的問題,若是要真正用於生產仍是有不少問題須要解決,不少方案須要設計,不少容錯須要處理。今天看資料學習到了docker是怎樣解決容器裏面數據存儲的問題的方案,之前作PAAS遇到過這種問題,不過本身也設計了相應的方案解決了問題。不過docker提供的volumes解決方案好像感受更加完美和靈活一些,可是整體架構和思路其實都是同樣的。下面就根據本身的理解說說docker的volumes解決方案,官方文檔有詳細的使用說明,若是想要嘗試一把,請自行google或者直接訪問docker官方問題:https://docs.docker.com/userguide/dockervolumes/web

        在介紹具體方案之前先說說基於container運行的程序有什麼樣的數據存儲問題。傳統的軟件開發人員都習慣了使用本地磁盤保存文件等數據,若是程序掛了之後從新啓動之後那麼數據還在(硬盤沒壞的狀況下),你可能會說爲何不使用雲存儲或者分佈式文件系統或者數據庫之類的,首先傳統行業開發者可能尚未接受或者接觸雲存儲系統和概念,其次小公司或者我的開發者不必定可以能夠本身使用的雲存儲系統(第三方每每須要收費,並且不必定好用),數據庫不合適存儲文件。因此這些問題就須要PAAS平臺(不論是公有仍是私有,固然這裏把docker也算在內了)去解決,若是PAAS平臺是基於container運行應用的架構那麼就存在本地數據存儲的問題。由於PAAS平臺須要合理利用資源,那麼就須要動態調度運行程序到不一樣的主機上去運行,那麼在應用被從一個container調度另外一個container運行的時候,怎樣保證數據也被一樣遷移過去,並且遷移後的container和之前的container可能根本不在同一個主機上。那麼數據遷移就是一個很大的問題,想要很優雅的解決這個問題不是那麼容易的。docker

        先看看我之前是怎麼解決這個問題的(其實你會發現和docker的解決方案是那麼驚人的類似),咱們爲開發者提供一個目錄,承諾在這個目錄下存放的問題保證在大多數狀況下不會丟失(極端狀況可能會丟失一些數據,例如硬盤壞掉並且這時數據恰好尚未成功備份,固然也有解決方案,不過須要犧牲用戶體驗和性能:就是同步寫雲存儲),而後咱們有一個文件系統的監聽agent會監控這些目錄的變化,若是在一個固定間隔時間內有文件變化就會按期把這個目錄壓縮成一個壓縮文件而後上傳雲存儲,當用戶的應用被遷移到另外一個container中去的時候在從雲存儲下載而且解壓到相應目錄便可。這裏爲了解決用戶不停的寫文件致使頻繁的進行壓縮和上傳操做,咱們設置了一個時間間隔來作這些操做。若是在這個時間間隔內有數據寫入而且尚未執行壓縮上傳操做的時候主機掛掉或者硬盤壞掉那麼部分數據丟失。爲了解決上傳過多文件到雲存儲每次都是覆蓋之前老的文件,即一個應用只有一個壓縮文件被存放在雲存儲。經過這種方案咱們解決了基本上99%以上的數據存儲問題。數據庫

        繼續閱讀後文,請到:www.wuyouqiang.com架構

相關文章
相關標籤/搜索