[SCM]源码管理 - perforce的集中授权+分布式团队+负载均衡+可扩展性+高可用性+灾难恢复...
?
本文主要討論perforce的
* perforce集中授權
* perforce對分布式團隊的支持
* perforce的負載均衡?和可擴展性
* perforce高可用性和災難恢復
?
一 perforce集中集中授權
目前的情況是很多大的公司中,不同的部門有不同的p4server,就導致了公司內部多個p4server同時存在,作為p4server管理員就需要更多的精力來備份和恢復所有的server,管理所有的server的用戶和權限。通常的情況是一個用戶在多個p4server擁有賬戶,如果此用戶離開公司,或需要修改名字,則需要在多個p4server上進行刪除或修改。
最新2010.2以后的p4server提供了集中授權的機制,就是說可以使的多個p4server的用戶和權限的信息都統一存儲到一個p4server。從而大大減少了管理員的負擔。例如下面的例子:
p4d -In server2 -a central:1666 -p 1999
?
server2 使用集中的授權server central來進行用戶和權限的管理。server2將依賴于central server的user,group,protection,review和license信息。
除了集中的授權服務器,最新的p4server還支持對多個p4server的chagnelist集中于同一個server來管理,從而使得整個公司的changelist可以唯一標識,不會重復。
上面的集中的授權server和changelist server用來解決公司中存在多個p4server的一些問題。如果可以的話建議在公司使用唯一的p4server,從而避免很多重復的管理工作。下面來看看全公司只有一個p4server可能要面對的問題。
?
二 p4server的部署結構
對于每個p4server,在server端主要包含兩類數據:1)源代碼,我們稱為versioned files; 2)perforce的數據庫文件,例如包含user信息的db.users,包含change的db.changes等, 我們稱為metadata,也可以稱為database。
?
三 perforce對分布式團隊的支持
perforce能夠很好的支持跨國公司的分布式團隊的軟件開發。假如某跨國公司在美國,印度,中國,英國都有某個產品的開發和測試人員,且p4server(mainserver)是在美國,我們知道文件的遠距離傳輸是非常的慢的,如何能夠使印度,中國,英國的這些人員都能夠快速的訪問源代碼呢?perforce提供了proxy的機制來避免文件傳輸的問題。 只需要在印度,中國,英國建立與mianserver對應的proxy,然后當印度,中國,英國的開發人員第一次訪問proxy的時候,proxy會自動地將文件從mainserver拷貝到本地的proxy,而以后所有的本地的開發人員的訪問只是從本地的proxy來獲得文件,從而大大地提高了開發人員訪問代碼的速度。
?
proxy的建立實例:
p4p -p 1999 -t central:1666 -r /var/proxyroot
?
注意: proxy只是用來減少文件的傳輸,更好地支持分布式團隊的開發,所以proxy只是自動地將versioned files拷貝到proxy,metadata的訪問仍然需要訪問mainserver。
?
四 perforce的負載均衡和可擴展性
如果一個大公司只有一個p4server的話,我們不得不考慮server的負載均衡問題,如何能夠使得server能夠同時支持開發人員和后臺service的訪問而不當機。對于負載均衡通常的做法就是讀寫訪問的分離。 perforce擁有replicated server + broker來完成負載均衡。
replicated server是對mainserver的復制,復制的過程在后臺自動地完成。replicated server一般作為只讀的server來處理只讀操作。可以使用p4 pull或p4 replicate來創建replicate server。例如我們可以創建replicated server用來report或用來build,從而減少對mainserver的訪問。
但是要實現真正意義上的負載均衡,我們還需要使用perforce broker作為mainserver,proxy和replicated server的前端接口,當用戶訪問broker的時候,自動地將只讀的操作轉到replicated server,需要寫的操作轉到proxy或mianserver。
proxy和replicated server可以隨著用戶的增加擴展,很好地支持了可擴展性。但是貌似mainserver的擴展沒有任何支持。:)
?
注意: 一般的replicated server只是作為只讀的server來分擔只讀的操作來減少mainserver的負載。因為replicated server是自動地從mainserver同步而來,如果replicatedserver只是只讀的話不需要反向的同步,所以不需要對database的任何lock,也就不會有任何的性能問題。replicated server可以根據需要設置為只replicate database文件,或replicate database+versioned files。例如如果用作report作用的話只需要replicated database就可以了。
?
五 perforce高可用性和災難恢復
對于perforce我們可以進行備份恢復來避免日常的p4server的破壞。但是對于高可用性和災難的恢復,目前的perforce的支持還不是很直接和完美。 對于跨國公司的,如果在多個地方都設置有replicated server的話,當mainserver當機或mainserver在災難中被破壞的時候,用戶仍然可以訪問replicatedserver來進行讀操作,或者我們也可以快速地將replicated server啟動為mainserver來縮短當機的時間,達到一定程度的高可用性和災難恢復的作用。
?
我們可以考慮將更通用的數據庫的負載均衡,可擴展性,高可用性和災難恢復應用到perforce中。
?
完!
總結
以上是生活随笔為你收集整理的[SCM]源码管理 - perforce的集中授权+分布式团队+负载均衡+可扩展性+高可用性+灾难恢复...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#学习笔记五面向对象基础
- 下一篇: string replace