本文主要讨论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的集中授权+分布式团队+负载均衡+可扩展性+高可用性+灾难恢复...相关推荐

  1. [SCM]源码管理 - perforce快速入门

    Perforce是目前比较流行的集中式的源代码管理工具,在很多的欧美跨国公司被广泛的使用.他能够运行于Windows,Linux,Mac几乎所有的平台,支持客户端,命令行,IDE集成,操作系统shel ...

  2. [SCM]源码管理 - SVN Server

    一 SVN命令行简介 1)命令行方式的SVN Server和Client下载: http://www.collab.net/downloads/subversion/ 2)设置path路径:set p ...

  3. [P4]源码管理 - perforce(p4)的分支与集成

    源码管理 - perforce(p4)的分支与集成 摘要:p4的分支创建和集成过程主要包含4个步骤: (1) 使用'p4 branch'创建branch spec: (2)使用'p4 integrat ...

  4. [SCM]源码管理 - SVN的备份和还原

    转自: http://spiritfrog.iteye.com/blog/448578 + http://magnet2008.iteye.com/blog/586578 备份策略 ========= ...

  5. [SCM]源码管理 - SVN:externals

    svn的外部定义svn:externals 转自:http://blog.csdn.net/jaconey/archive/2008/05/15/2448986.aspx 解决你的外部依赖 -- sv ...

  6. 彩虹秒赞7.8源码破解版(去域名授权) 彩虹云任务系统无任何限制

    彩虹秒赞7.7云任务系统整站源码,在这里完全免费分享了.功能还是非常不错的哦,喜欢的小伙伴们惊喜吧! 以下文字为源码包里面的介绍,具体功能和情况请自行下载测试了解 新版特性: 1.全新界面,响应式布局 ...

  7. WordPress总裁CeoMax主题模板源码3.9.1无需授权

    正文: WordPress总裁CeoMax主题模板源码3.9.1无需授权,总裁主题是一个非常不错的WP模板,支持非常多样化的搭建,可以构建自己独一无二的页面,模板功能也非常的强大,完整演示图在压缩包. ...

  8. 0918 iOS10兼容/iOS系统过高或过低配置包/混合引擎的在线视频连麦互动直播/源码管理工具/Xcode8插件升级/导航栏渐变

    1 兼容iOS 10 资料整理笔记 http://www.jianshu.com/p/42e506998082 iOS developerDiskImage 这是由于真机系统过高或者过低,Xcode中 ...

  9. jenkins 源码管理 returned status code 128: stdout: stderr: fatal: unable to access “****” 403 解决办法

    在配置jenkins 源码管理 远程链接git时 提示 报错 Failed to connect to repository : Command"usr/bin/git ls-remote ...

最新文章

  1. Android系统中的进程管理:内存的回收
  2. Java的值传递解析
  3. mysql firebird 性能_Firebird, MySQL 与 PostgreSQL 代码质量对比
  4. SQLSERVER字符串截取------STUFF
  5. Android开发之多点触摸(Multitouch)
  6. python开发软件的实例-由Python编写的MySQL管理工具代码实例
  7. Today Take a Look at Nike's Valentine's Day Sneakers
  8. 新学到的Url形成方法
  9. 苹果Mac 3D 模型展开工具:Unfolder
  10. Iptables基本概念及应用
  11. 九宫格日记:微博难越,前路漫漫
  12. 2020 网易 面经
  13. 通过降低CPU频率 达到降低功耗的目的
  14. 资料:线性代数与空间解析几何知识点全汇总
  15. 超级牛散股神叶健颜专找重组题材股,精准买入,不服不行。
  16. vue限制只能输数字
  17. 打开浏览器默认打开hao123网站的主页怎么取消设置?
  18. MySQL中的auto_increment
  19. 搭建通过路由器连接到光猫的服务器
  20. 安卓手机格式化怎么弄_安卓手机怎样进入格式化?

热门文章

  1. 【luogu】 P1880 石子合并
  2. LigerUi之Grid使用详解(二)——数据编辑
  3. 安装部署Exchange Server 2010 CAS NLB MailBox DAG
  4. java8中的lambda用法实例
  5. springboot中三种xxxx.setAttribute()并与python中flask作对应比较+容器的通俗理解
  6. The procedure WAL relies on the ability to hsync for proper operation during component failures
  7. django-oscar的商品显示为unavailable(不可购买)
  8. ubuntu linux下面运行《暗黑破坏神2》和英雄无敌3-死亡阴影
  9. 波士顿房价数据集解读
  10. redis中的改操作