[SCM]源码管理 - perforce与分布式团队的开发

perforce与分布式团队的开发

一 perforce proxy和 perforce replicated server

perforce通过perforce proxy和perforce replicated servers来很好地支持分布式团队的开发。proxy和replicated servers可以根据情况单独地使用或混合使用。可以通过简单地增加新的proxy或replicated server来适应全球的新的用户的增加。
[SCM]源码管理 - perforce与分布式团队的开发_第1张图片

 

perforce proxy
perforce proxy的执行文件为p4p,是一个自维护的proxy server,他缓存远程的p4server的versioned files到本地网络,从而大大地减少了本地用户传输文件的时间。如果一个文件已经被其他的用户请求到本地的proxy,本地的其他用户对此文件的访问都将直接操作本地的proxy,所以用户操作体验将会很流畅。同时p4p也减轻了main server的负荷。因为p4p自动地从main server获取跟新,所以我们也不需要对proxy进行备份。

perforce replication server
replicated perforce server维护了整个repository的一个只读的拷贝,可以只replicate p4 的datebase或者replicate所有的p4 database文件和versioned files。对main server的只读的操作可以被转到replicated server, 此方法也减轻了main server的负荷。同时replication还有高可用的作用,当mainserver停机时,开发人员还可以访问replication server来执行读操作。 或者可以快速地将replicated server转化为main server。

 

 

perforce broker
broker作为traffic director,将只读的命令发送到本地的replicated server,将需要写权限的命令转发到main server或 proxy。使用broker和replicated server后用户的只读操作将会很流畅。

 

 

proxy与replication的区别:
proxy只是自动地将versioned files缓存到了proxy所在的server,来减少远程用户文件的传输时间。p4server的database还是在main server的。所以proxy的主要作用是减少文件传输的时间,提高用户体验。
replication是将所有的database或者versioned files+database文件都拷贝到replication所在的server,但是replication server只接受只读的操作。所以replication的主要作用是减少main server的负荷。

 

 

二 perforce proxy

 [SCM]源码管理 - perforce与分布式团队的开发_第2张图片

proxy的在windows上可以通过perforce.exe来安装proxy为service,或者在命令行运行p4p来启动proxy。

[SCM]源码管理 - perforce与分布式团队的开发_第3张图片 

 

当作为service运行时,需要设置service的参数,例如命令p4 set -S "Perforce Proxy" P4POPTIONS="-p 1999 -t mainserver:1666"为perforce proxy service设置的启动参数为"-p 1999 -t mainserver:1666",“-p 1999”表示此proxy的监听端口为1999,“-t mainserver:1666”表示此proxy将是mianserver:1666的proxy。用户可以使用"ipofproxyserver:1999"来访问此proxy。

proxy也可以直接从命令行启动,例如p4p -p 1999 -t central:1666 -r /var/proxyroot启动的proxy监听端口1999,且mian server是central:1666,proxy的缓存目录为/var/proxyroot。


注意:
*不需要对proxy的缓存目录备份;
*在sync文件时可以使用-Zproxyverbose来查看文件是来自mainserver还是proxyserver,例如p4 -Zproxyverbose sync noncached.txt;
*使用-c参数表示在proxy和mianserver间文件传输压缩,压缩后减少了网络的负担,但是需要在增加了server的压缩和解压负担;
*p4p只有当用户提交文件修改或请求文件时,才将文件缓存到proxy的存储中,也就是说proxy不会提前自动地缓存所有的文件。但是一但文件被缓存过则直接从proxy的缓存获取;
*proxy的建立者可以使用-Zproxyload来将versionedfiles跟新到proxy的缓存,来减少以后的文件传输时间,例如p4 -Zproxyload sync //depot/main/...;
*可以使用文件夹连接来避免缓存目录的空间大小的限制;

 

三 replicated server

作用:
*可以减少main server的负担和停机时间。 长时间的查询操作,报表,构建,和checkpoint都可以在replicated server上来完成。在replicated server上checkpoint可以减少对main server的lock时间。 且报表和checkpoint,只需要p4 server的database被replicated。对于构建任务,需要构建进程访问main server的versioned files。
*提供热备用的server。如果main server失败了,可以使用p4 replicate命令来维护replicated server作为热备用的server。此时replicated server需要database和versioned files均被replicated。 p4 replicated命令只能replicated database文件。对于versioned files的replicate需要使用p4 pull命令来完成。

可以使用p4 replicate 或 p4 pull 和 p4d来建立replicated server。
1)p4 replicate : 表示replicate p4的database从一个server到另一个server;
2)p4 pull : 表示replicate p4的database和versioned files从一个server到另一个server;
3)大部分情况下我们使用p4 pull,因为不仅replicate p4的database,而且还自动replicate p4的versioned files;
4)对于replicated server的启动参数需要为p4d -M -D, -M表示对replicated server的database文件为只读的,-D表示对replicated server的versionedfiles为只读的。总之replicated server只处理只读的操作;
5)也可以使用p4 configure db.replication=readonly 和 lbr.replication=readonly来设置replicated server的只读行为;

6)使用p4d -In name 或 p4 configure name来给p4 server命名;

7)可以指定replicated server与mainserver交互的用户,如p4d -u svcuser,此类型的用户需要为service类型,只能用做replicated或proxy server,不占用license;

8)设置环境变量P4TARGET,或者在p4d -t host:port,或者在p4d运行后使用p4 configure P4TARGET 来指定replicated server所指向的main server;

9)startup.n 用来指定p4 pull的进程数量,可以多个p4 pull同时运行;


 

replicated server的一些限制:
*p4 replicate和p4 pull命令所读取的main server的journals都必须是非压缩的。
*replicate server必须有license文件,可以联系p4公司创建重复的license文件。
*replicate server与main server必须有相同的time zone设置。

 

 

五 broker

 

p4broker的启动很简单,例如p4broker -c config_file -d。也可以使用p4 set -s P4BROKEROPTIONS "-c c:\p4broker\broker.conf"来设置p4broker的命令行参数。使用p4broker -C > p4broker.conf来创建conf的模板。

一般conf包含3部分:
* general信息,例如target表示默认的命令处理的p4server;listen表示broker要监听的端口;admin的信息等。
* alternate server definitions:表示replicated servers地址.
command handler specifications: 表示命令的分发规则。
 

 


完!

你可能感兴趣的:([SCM]源码管理 - perforce与分布式团队的开发)