论文部分内容阅读
在大型互联网公司,软件开发越来越注重工程效率,大多数大型互联网公司尝试DevOps开发流程。DevOps是一种结合了过程、方法与系统思想的方法论。并促进从需求、开发、测试和发布多流程之间的协同,DevOps流程的开始和工程开发业务的基础就是代码管理,因此保证代码库存储的高可用性和安全性等存储问题的研究显得尤其重要。托管平台的代码存储集群采用分库的方式存储代码库,在应用层设计了路由选择模块,路由选择模块是为了进行代码操作的时候能够有效的将代码库的变更存储到指定的节点上。平台作为Git代码托管平台,所以Git客户端的反向代理分别采用了HTTP传输的OpenResty和SSH传输的基于Mina-sshd自定义Proxy;托管平台采用微服务架构,模块之间RPC接口的传输采用Dubbo,代码存储设计解决了客户端和浏览器使用场景如何对接路由选择模块的问题,使得调用各服务时也能进行路由选择。由于托管平台会触发代码编译,可持续集成等上下游服务,代码存储管理设计的每一个集群采用了一主两从的方式,一份代码,有三份备份,保证了代码的安全性,同时主从节点采用读写分离策略,保证了代码存储时候代码读写的可用性和高效性。当互联网开发团队需要支持万级别的研发团队的时候,公司代码累计会超过十万项目,同时日请求量会达到百万级别。基于Git版本控制的代码平台底层依赖于JGit,平台的代码评审和存储依赖于Gerrit,这样代码库大小早已超过了Gerrit官方支持的单机上限了,所以核心问题是研究该平台如何解决代码存储的问题,故存储方面的设计解决了这个痛点。