码云 Gitee:高并发大存储下的架构演进之路
码云 Gitee 自2013年推出以来,每年的数据量都是倍增的,截止到2021年3月份,Gitee 上已经有了600万+的开发者,超1500万的仓库,成为了国内首屈一指的研发协作平台。在数据日益增长的过程中,Gitee 的架构也是经过了数个迭代,才能支撑起目前的数据量级。我曾在不少的大会上分享过 Gitee 的架构,也和很多有类似场景的同学一起讨论过,偶然被问起有没有专门的文章来介绍 Gitee 架构的,所以难得假期有时间,将此主题整理成文,以供大家参阅。
April 03, 2021 20:09
使用 Git 丢失代码的 N 种操作,您中招了吗?
无意翻出这篇写于两年前的手稿,当时交付的几家私有云大客户以及公有云客户均频繁遇到此问题,虽然现象千奇百怪,但是无非是错误的操作导致的代码丢失,秉承着开放、自由、分享的开源精神,把相关的错误操作整理出来并加以说明,对于新老用户都是一种引导,不仅可以避免给团队带来麻烦,也使自己能够更好的理解 Git 的一些运作方式,所以整理成文,希望能够帮助到有需要的人,尤其是公司内部研发流程的培训上,更应该关注这一类误操作的普及和说明,避免「不了解」给团队带来的麻烦。
March 31, 2021 23:22
谈谈 Git 存储原理及相关实现
Git 是目前最流行的版本控制系统,从本地开发到生产部署,我们每天都在使用 Git 进行我们的版本控制,除了日常使用的命令之外,如果想要对 Git 有更深一步的了解,那么研究下 Git 的底层存储原理将会对理解 Git 及其使用非常有帮助,就算你不是一个 Git 开发者,也推荐你了解下 Git 的底层原理,你会对 Git 的强大有一个全新的认识,并且将会在日常的 Git 使用过程中更加得心应手。
February 21, 2021 23:30
聊聊 Git 的三种传输协议及实现
众所周知,Git 是当前最流行的分布式版本控制系统,近两年由于 DevOps 的迅速发展,一切皆代码正在成为标准实践。而这一切,都需要有一个配置管理中心统一管控,Git 毫无疑问的成为了这个领域的宠儿。日常开发工作中,我们经常用不同方式去下载和上传代码到 Gitee,那么这背后是如何实现的呢,让我们一起来聊聊 Git 不同的传输协议以及具体的实现。
January 24, 2021 23:24
一起来玩 Jenkins:(5)基于 Gitee + Jenkins 的开源项目自动化协作实战
在开源理念日渐活跃的今天,越来越多的人开始投身于开源,贡献了越来越多的开源项目。而随着时间的推移,更多的人开始为开源项目添砖加瓦,为某一领域的开源项目贡献出自己的力量。贡献者的增多又给开源作者带来不少审核的压力,实际上投身开源的这些开源作者基本都是业余时间来做,并没有太多的时间投入在开源项目上。本文就为了解决这类场景,介绍下如何在 Gitee 上通过 Jenkins 来为自己的开源项目开启自动化协作,旨在将一些开源相关的工作自动化,留出更多的时间投身开源事业。
December 06, 2020 22:17
浅谈 Pull Request 与 Change Request 研发协作模式
说起 PullRequest 相信大部分人都不会陌生,它是由 Github 推出的一种开源协作模式,由于 Gitlab 占据着企业内部私有部署的半壁江山,这种模式也更多的用在企业内部代码审核流程,也就是所谓的 CodeReview。其实还有很多企业和团队会选择 Gerrit 这个工具,Gerrit 提供的是 ChangeRequest 模式,这种模式更具有针对性,对代码审核的粒度也更细,近期有客户需求在 Gitee 上实现类似 ChangeRequest 的需求,所以针对两种模式做一个介绍,探讨两种模式的具体适用场景。
November 22, 2020 20:26
使用加权轮询算法和 Go 实现 HTTP 负载分发代理
最近看到了一篇文章,细讲了各种分布式调度原理,其中加权轮询算法(Weighted Round-Robin)应该是离我们最近的一种方式了,Nginx 的 Upstream 就是用的这个算法,这个算法可以根据权重使得每个服务器能够均匀的负载请求,本篇主要就是来总结下使用这个算法以及 Go 内置的方法来实现一个简单的加权轮询的 HTTP 负载分发代理,并对负载分发及路由做一些延伸思考。
November 01, 2020 01:08
一起来玩 Jenkins:(4)为 Blogine 博客系统配置持续发布的能力
前面我们介绍了 Jenkins 相关的流水线以及可视化编辑流水线的 BlueOcean 插件,接下来我们主要通过一些实际的应用,来介绍下 Jenkins 在实际工作中的应用,同时也能够避免枯燥乏味的功能介绍,直接切入应用,这样来的比较有成就感。近期也是因为公司工作调整,突然间多了很多事,所以停更了一个月,晚上睡觉想起倍感羞愧,不敢睡觉,于是赶紧补上此篇博客来弥补内心的空缺 ;D
October 28, 2020 01:35
一起来玩 Jenkins:(3)BlueOcean 介绍与使用
上篇中我们介绍了 Pipeline 的语法,也可以通过 Pipeline Editor 进行编辑,但是这些还不够,Jenkins 团队为了用户更方便的使用流水线,降低用户使用成本以及优化用户使用体验,推出了 BlueOcean,BlueOcean 是以插件的形式存在的,用官方的话说就是重新思考用户体验,它提供了一个更加灵活的流水线编辑器,允许你更加直观的进行流水线的定制,更加直观的观察到每一个步骤甚至每一个任务的运行状况。
September 17, 2020 23:54
鸿蒙开源,Gitee 交了一份满意的答卷!
9月10号,华为HDC大会如期召开,余承东先生在大会上宣布鸿蒙开源,并公布了以 Gitee 为主托管仓的地址。鸿蒙的开源前期可以说是吊足了国内外开发者的胃口,所以早在2019年红薯老大就开始不断的给我预热鸿蒙开源这件事情可能带来的巨大的访问量,这对于 Gitee 来说,就像是面试7年的一次大考,如果做不好,可能是一次大劫,所以无论是站在中华有为的角度还是以 Gitee 负责人的角度,我压力倍增,无论如何,在可能到来的访问量上,Gitee 需要顶住,当然不是说说,准备工作一定要做足。
September 13, 2020 23:11
一起来玩 Jenkins:(2)入门实例及 Pipeline 介绍与使用
上篇中我们主要介绍了 Jenkins 的安装以及基本的一些配置和插件的使用,本章节主要从流水线层面介绍下不同类型的流水线的使用,并来介绍下 Jenkins Pipeline 及 Jenkinsfile 基本语法。
September 06, 2020 00:23
教你自定义 Promethus 数据源并在 Grafana 展示
从 MRTG 到 ZABBIX 再到 Prometheus & Grafana,技术的变革迭代之快让我无法想象,会想起用 Zabbix 的时候觉得 Zabbix 这东西真的厉害,还专门注册了个域名 Mabbix.com 想要为 Zabbix 做一个手机客户端,不过很快 Prometheus & Grafana 体系就出来了,这里简单介绍下如何自定义 Metrics
September 03, 2020 00:44
up2GitX v1.1.0 发布 - 支持镜像 Github 空间到 Gitee
本次更新发布应呼声,支持选择上传到 Gitee 组织,支持创建组织,并上传仓库到创建的组织,支持镜像 Github 空间(个人或组织)到 Gitee 的组织或个人空间下。
September 02, 2020 17:30
一起来玩 Jenkins:(1)基础搭建和功能介绍
一起来玩 Jenkins 系列主要是自己对 Jenkins 使用的见解和总结,将从 Jenkins 的基础安装、功能介绍等入手,外加实际使用的 Demo 配置流程,使大家能够了解 Jenkins 的基本功能和实际应用,希望能帮助到对它感兴趣的朋友。
August 22, 2020 12:19
写了个批量 Git 托管工具 - up2GitX
经常会有一些公有云的客户问有什么办法把本地的仓库批量上传到 Gitee,如果仓库量少,可通过导入功能导入,但如果仓库量很大,一般没什么办法,只能告诉用户有Api,可以通过Api批量创建,这种工作,作为平台,应该提供这种能力,所以上周六看到客户群里又有人问,就开始启动这个小项目了,上周六完成了仓库的创建相关,今天完成了代码同步以及并发的支持。
June 13, 2020 16:03
通过配置实现极简的 Git 服务的异地多中心方案
最近遇到一个场景,客户希望自己在多个地区的开发科室能够共用一套Git系统,但是由于跨地区的原因,带宽是这种使用场景的唯一障碍,增量的更新还勉强可以接受,但是如果需要全量Clone一个上G的仓库,那将会非常非常慢。限于有限的开发资源和众多的客户需求,于是思考了下可以通过配置以及少量的开发即可实现简单的异地多中心方案。
May 21, 2020 22:19