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