TOC

Micro (go-micro)

Micro 上次作妖的时候,我专门了解过,但是时间有点久有点忘了,这里把我记得的整理一下做个记录。


Micro 是个非常又名的微服务框架,是 Golang 微服务中最知名的项目。

其实 Micro 项目有两个:micro/go-micro micro/micro ,前者微服务框架,处理微服务的基础功能,比如服务管理、服务间通信,后者是基于前者的一套方案,包括 Dashboard、API 网关等一些基础设施,还有一些命令行工具。

  1. 后来,宣布 micro 3.0 要改成云原生框架,和他们公司(Micro Services, Inc)的云平台 M3O 深度绑定,然后 go-micro 项目不再继续维护(现在他们的官网上还有部分资料将原来的项目称之为 deprecated go-micro)。
    PS:官方在介绍 micro 3.0 的时候说 go-micro 是个失败的项目,没有达成他们最初的目标——简化开发者构建分布式系统的难度,反倒使自己成为一种过于复杂的技术,然后有必要重头来过。
    PS:micro v3 已经彻底删除了对 go-micro 的依赖。或者说 go-micro 已经经过重构,然后完全并入了 micro v3。

  2. 再后来,又看到说是 go-micro 转成 CEO 的私人项目 asim/go-micro

  3. 再后来,又看到新闻说为了和官方新版 micro (3.0) 搞混淆,弄了一个新的 Nitro 项目 (https://go-nitro.dev)。GitHub 打开 go-micro 会跳转到 Nitro 仓库 (先是 asim/nitro,后来是 gonitro/nitro)。

  4. 再后来,micro 授权协议由 Apache 2.0 改成非商业的 Polyform Shield,那个 Nitro 项目授权协议也做相同的调整。

  5. 再后来,又不再提 Nitro 了,GitHub 打开 nitro 又反过来跳到 asim/go-micro (而且仓库中关于 Nitro 相关记录好像完全被抹去了一样,修改协议的 commit 都找不到)。
    go-micro 和 micro 是非常容易混淆的,每次都要根据上下文来判断说的是哪个,所以对于更名我是非常理解的。不过,在已经更名一段时间之后,micro 已经彻底和 go-micro 划清界限(清理了相关依赖)之后,又改回来,我就不知道是怎么想的了。

  6. 再后来,micro 和 go-micro 的授权协议不知道为啥,又改回了 Apache 2.0。

  7. 再后来,micro/go-micro 又重新可以访问了,和 asim/go-micro 保持一致。
    都已经把 go-micro 从 micro 中彻底抹掉了,又加回来这个仓库是为啥?

这就是现状:

micro 和 go-micro 是完全没有任何关系相关的两个项目,micro 已经发展到了 3.7 版,go-micro 已经到了 4.4 版。按理来说,go-micro 应该出于不积极维护的状态,但是我看 GitHub 上的更新频率好像比我想象中的要高一些。
我真的非常想弄清楚他们公司对这两个项目的定位。


Name Time Website GitHub
go-micro 2015 https://go-micro.dev/ go-micro/go-micro
go-kit 2015 https://gokit.io/ go-kit/kit
go-zero 2020 https://go-zero.dev zeromicro/go-zero
go-kratos 2019 https://go-kratos.dev/ go-kratos/kratos
dubbo-go 2019 https://dubbo.apache.org/ apache/dubbo-go
tars-go 2018 https://doc.tarsyun.com/ TarsCloud/TarsGo
jupiter 2020 https://jupiter.douyu.com/ douyu/jupiter