私有 git registry 工具 2024 年度比较

私有 git 仓库,作为软件工程的底层基建,市面上有很多开源解决方案

  • 本文比较时间为 2024 年 1月,如有新增改动,不属于本文比较范畴
  • 部分比较,比如 开源程度 版本管理 由个人主观统计开源对外展现,如有异议,为本人主观统计
项目gitlabgogsgiteaTortoiseGitonedev
首发时间20112015201620082020
开源程度开源CE版本授权受限个人维护响应缓慢社区维护响应快社区维护几乎停止关闭 issues 不对外沟通
维护类型GitLab 公司个人 unknwon开源组织 go-giteaTortoiseGit team个人 robinshine
版本管理严格日志详细版本严格,日志详细版本严格,日志详细文档日志详细,无改动跟踪版本变更大,全是MAJOR改动,且无改动跟踪
开发语言rubygolanggolangC++java
Git 基建rugged
(binding for github.com/libgit2/libgit2)
github.com/gogs/git-modulegithub.com/go-git/go-gitgithub.com/libgit2/libgit2org.eclipse.jgit
数据库驱动ruby-pg
(写死 postgres 修改需要改源码)
github.com/go-xorm/xormxorm.io/xormN/Aorg.hibernate
Web 基础Ruby on Railsgopkg.in/macaron.v1github.com/go-chi/chiN/Aorg.apache.wicket
项目gitlabgogsgiteaTortoiseGitonedev
git基础功能完整完整完整只包含 windows 平台完整
git lfs支持受限最大单文件1G支持不支持受限支持,不推荐使用git lfs
仓库镜像EE version Repository mirroring支持无官方文档链接Repository MirrorN/AOneDev 7.1+
管理模型pull requestpull requestpull request无管理模型pull request
版本支持tag/releasetag/releasetag/releasetagtag/release
仓库支持不支持(企业版支持 package registry)不支持支持主流仓库,点击查看不支持
CI/CD自带 master/agent runner不支持自带 act-runner
或者使用三方
drone
woodpecker-ci
不支持自带 master/agent 模式

k3s containerd cilium hubble 集群快速上手

  • 使用本文前,必须清楚熟悉 k8s ,熟练使用 k8s,清楚 CNI (Container Network Interface) 概念和原理
  • 本文是针对集群部署,目标是使用 cilium ,用以提升网络工作负载 ,服务的可见性,可维护性的实验,作为 k8s 使用 eBPF 的验证环境使用,不能作为生产环境配置
  • 集群中,从网络上是全部等效可见的,因为集群内 cilium-agent ( 简写 cilium-ag) 可以不需要 管理平面或操作运维平面 Cilium Operator 导致
  • 但是在物理平面或操作运维平面上还是分 server ( 管理服务节点) 和 agent(工作负载节点)

k3s 是 rancher 开源的一个 Kubernetes 发行版,并且对宿主的运行要求非常低,非常适合做 k8s 实验环境,和边缘技术服务的基建

线程模型 线程切换成本

首先明确进程与进程的基本概念:

  • 进程是资源分配的基本单位
  • 线程是CPU调度的基本单位
  • 一个进程下可能有多个线程
  • 多个线程共享进程的资源

不同的 OS 进程 和 线程是实现细节不一样的

特别是 用户态和内核态 区别非常大

memgraph 本地学习环境部署

开源 图数据库,专为 实时流数据构建,兼容 Neo4j

使用授权是 the Business Source License 1.1 (BSL)

企业版是 额外提供权限管理功能,详细见官网

注意:

docker 镜像 tag 特殊字符解释

基于 alpinelinux 制作的镜像

apline是Alpine Linux操作系统,它是一个独立发行版本,相比较Debian操作系统来说Alpine更加轻巧,而通过Docker镜像搭建微服务倡导的就是一个“轻量级”概念,所以很多语言、应用也都发布了Alpine版本的Docker基础镜像

异步编程-阻塞&非阻塞

异步是必须系统提供并行或者并发的能力才能做到的,没有并行或者并发的系统不支持异步编程

所谓同步和异步,本质上区别是:逻辑请求发出后,是否需要等待结果,才能继续执行操作

是多个逻辑结构的编程设计模式,异步实现的依赖

多任务在同一个时刻同时执行,必须要求多个执行主体,比如多核CPU或者多CPU,每个核心独立执行一个任务,多个任务同时执行,不需要切换