[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中。

 

完!


posted @ 2011-08-26 17:19  iTech  阅读(1177)  评论(0编辑  收藏