zoukankan      html  css  js  c++  java
  • [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中。

    完!


  • 相关阅读:
    Python网络爬虫 第三章 requests进阶
    Python网络爬虫 第二章 数据解析
    Java 工具库Hutool-db数据库简单操作
    JavaScript基础
    K-Means文档聚类
    利用余弦距离比较文档间的相似度
    算法类——数学问题汇总
    基于K-Means的文本聚类
    加速国内 Github 访问,下载,的9种方案!
    为什么用MQTT而不用TCP长连接透传
  • 原文地址:https://www.cnblogs.com/itech/p/2154944.html
Copyright © 2011-2022 走看看