GitLab是一個利用 Ruby on Rails 開發的開源應用程序,實現一個自託管的Git項目倉庫,可經過Web界面進行訪問公開的或者私人項目。Ruby on Rails 是一個可使你開發、部署、維護 web 應用程序變得簡單的框架。GitLab擁有與Github相似的功能,可以瀏覽源代碼,管理缺陷和註釋。能夠管理團隊對倉庫的訪問,它很是易於瀏覽提交過的版本並提供一個文件歷史庫。它還提供一個代碼片斷收集功能能夠輕鬆實現代碼複用,便於往後有須要的時候進行查找。
因爲Git的分佈式特性,即便Gitlab不可用,開發人員仍然能夠在本地提交代碼。可是,某些Gitlab功能,好比CI,問題跟蹤和持續集成會不可用,也會嚴重影響線上使用。所以高可用架構仍是不可缺乏的。GitLab軟件架構以下圖所示:html
主備模式:啓動2個實例,只有一個工做提供服務,數據經過分佈式存儲保持一致node
主主模式(scales):Rails server啓動多個,同時提供服務,數據庫保持獨立,數據經過NAS文件存儲共享git
水平擴展web
這種架構適用於許多Gitlab客戶訪問的使用場景,解決高API使用率,大量排隊的Sidekiq做業的問題。數據庫
混合擴展後端
這種架構經過組件在專用節點上分離,提供高資源使各組件不會相互干擾,解決服務爭用/高負載的問題。api
全分佈式擴展網絡
該體系結構可擴展到數十萬用戶和項目,是GitLab.com體系結構的基礎。 雖然分佈式架構能夠很好地擴展,但它增長了節點的複雜性,配置,管理和監控的難度,不易維護。架構
阿里雲文件存儲NAS選型併發
GitLab場景一般爲海量小文件場景,須要併發的進行文件的讀寫操做。該種場景適用於極速型NAS。該種NAS後端基於RDMA網絡進行時延優化,對於元數據操做密集型的業務有很高的OPS和較低的訪問時延。
https://docs.gitlab.com/ce/administration/high_availability/README.html
本文爲雲棲社區原創內容,未經容許不得轉載。