目录

主流微服务框架对比

微服务框架

框架 作者 开源 一句话概述 优势 缺点 star
go-micro 国外,Asim 团队 2015 最经典的 Go 微服务框架之一 轻量级框架,入门简单,文档清晰 版本兼容性差,
社区活跃度一般
22.2k
go-zero 国内,万俊峰团队 2020 提供了微服务框架
需要具备的通用能力
提供了微服务框架需要具备的通用能力 社区生态非常好,无论是文档更新还是技术群都很活跃 30.8k
go-kit 国外大佬 2015 Go-kit 将自己描述为微服务的标准库。像 Go 一样,go-kit 为您提供可用于构建应用程序的单独包 不够活跃 -
tars-go 腾讯 2018 tarsgo 是 tars 这个大的C++ 重量级微服务框架下的go语言服务框架 优势在于很多能力不用从头开始做起,直接依托母体 tars 不够活跃 3.3k
dubbo-go 阿里 2019 dubbo-go 是 dubbo 这个
Java 重量级微服务框架下的 go 语言服务框架
和腾讯开源项目类似 不够活跃 4.8k
go-kratos B 站 2019 轻量级的微服务框架,框架定位于解决微服务的核心诉求 - 不够活跃 24.2k

技术选型

选框架前先搞懂自己要什么——不同项目对框架的需求天差地别:

  1. 性能:高并发场景(如秒杀)看QPS、响应延迟;普通场景够用即可,不必过度追求;
  2. 开发效率:全栈特性(ORM、模板)能省时间,适合快速迭代;轻量框架需自己集成组件,灵活但耗时;
  3. 生态完整性:微服务需要的服务发现、链路追踪、配置中心等组件是否有成熟集成方案;
  4. 扩展性:中间件机制是否灵活,能否自定义插件(如权限校验、日志收集);
  5. 学习成本:团队是否熟悉框架设计理念,文档是否完善;
  6. 社区活跃度:bug修复速度、版本更新频率,避免选“僵尸框架”。

注意:没有框架能做到“六边形战士”!选型本质是“需求优先级排序”。

常见问题

Q1:Go Kit这么复杂,小团队能不能用?

不建议!小团队用Go Kit会有两个坑:

① 初期搭建耗时1-2周,远超项目预期;

② 后续维护需要专人懂框架设计,新人上手慢。小团队想做微服务,

建议“Gin+第三方组件”组合(Gin+Consul服务发现+Jaeger链路追踪),成本低且灵活。

Q2:框架选好后,后期能换吗?

能换,但成本高,建议前期选对。

如果必须换,可采用“渐进式替换”:

① 先把旧框架服务拆成API网关和业务服务;

② 用新框架重写业务服务,通过网关路由切换流量;

③ 逐步下线旧框架服务

目前还没办法做到各种微服务之间优雅替换,而且替换框架这种做法也是极其不推荐

总结

根据调研结果分析,现在主流的 golang 相关的微服务框架有很多,大部分都是主流大厂内部使用并且开源出来的,不同场景和使用情况不同可以选择对应的框架使用,如:

  • 追求稳定经典:go-micro(最早的 go 微服务)

  • 国产稳定推荐:go-zero(目前仍旧持续迭代并且社区非常活跃,上手难度较低,缺点就是自定义 api 协议文件,不好迁移至其他微服务)

( 其他看个人习惯选择,比如你习惯了腾讯的开源工具,那么就选择腾讯的(腾讯似乎还有一个 trpc-go)

目前还没有推荐的微服务框架,感觉都比较乱,没有一个统一好用的框架,不过我用过 go-zero,好用是好用,而且社区也很活跃(开源作者直接在线回复),就是自定义 api 协议文件,不方便项目迁移到其他框架

大家都有用过哪些 go 微服务框架呢?欢迎大家在评论区分享交流!!!

版权声明

未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!

本文原文链接: https://fiveyoboy.com/articles/go-micro-server/

备用原文链接: https://blog.fiveyoboy.com/articles/go-micro-server/