Golang Go语言 微服务框架选谁
Golang Go语言 微服务框架选谁
go-zero 、kratos 、micro?
希望能有使用过比较深的人来综合比较下。
蹲,目前在用 go-zero
Micro 就不要了,资料少,Kratos 很不错
go-zero 、kratos 里选一个吧
kratos 设计理念不错
说实话,这些都不需要,grpc + k8s 就可以了
第三代微服务直接用 k8s 做负载均衡,k8s etcd 做注册中心,k8s configmap 做配置中心
有没有轻量级的微服务架构?适合做写简单的开发和实验用于论文写作。
grpc + 前置网关
grpc+1 写个代码生成就可以了
Kitex
kratos 、go micro 、go kit 吧
go zero 真的慎用… 看着都不错 用起来全是坑
dapr
golang 不需要什么微服务框架吧 直接开撸挺香啊
k8s 梭哈,再不行 istio,然后 dapr,还有 layotto,哈哈
#15 譬如你想同时暴露 grpc 接口和 http json 接口,那么你必须写 api 层,API 层是自己定义的一个 DSL,还要手撸一遍 rpc 层的结构体,然后手动 “copy” 过去;最难受的是 go zero 的序列化框架是自己写的,就比如序列化常用的 json 、form tag 啥的很多属性都是不支持的;然后你不清楚的情况下还可能会有迷之行为,而且最近开了两个 issue 来看,基本上你的 issue 项目管理者只要认为解决了就直接关了,不会有任何确认的,多了不说了,我也是帮别人弄东西的时候发现他们用了这个框架,我帮忙调试都快哭了。
自研了,gRPC + gRPC-gateway,开源在 github
主要是让之前的项目,RESTful API 能比较平滑的过渡过来
正在学习 go-zero
大而全的微服务框架不适合中小团队直接拿来用,而大团队自家定制、不太需要用别人的
单就 RPC:
https://colobu.com/2021/08/01/benchmark-of-rpc-frameworks/
帖子中的性能数据可能不准确,最好自己跑那个代码实测下,易用性和各方面优劣可用自行对比
用过 rpcx 和 go-micro 现在项目用的 go micro
我感觉在使用 k8s 情况下,这些微服务框架是不需要的。
虽然不直接使用,但是有些设计理念是可以借鉴使用的,在适合自己场景下进行改造乃上上策。
自己造轮子?
公司全部换成 go-zero 了
最好原生 grpc
原生 grpc 服务发现,均衡负载,都要自己写,那不是很麻烦?感觉 go-zero 还可以吧。开一个接口时,先用 api 上,如果不够用,在将此接口改为微服务。
又来大乱斗了,欢迎来看看我们的 go-kratos
用过 rpcx 和 grpc
字节 KiteX 的泛化调用很好用
为啥需要框架? grpc + k8s 就可以起飞了。需要 tracing 熔断 metrics 这类就上个 istio 或者 linkerd 。业务和运维的代码高度解耦化,写起来很清楚的。
kratos… 这框架名字太中二了 LOL
https://github.com/go-kratos/kratos/blob/main/README_zh.md
很多个月没来 V2EX 了,用户发给我,我来回答一下哈
api 是个聚合层,rpc 是基础服务层,你说的 copy 过去,可能是希望 api/rpc 共用一套定义?我比较倾向于单一职责,所以就出现了你说的『 copy 』
json, form tag 不支持是指啥意思? go-zero 支持 path, form, header, json tags
能否列一下哪个 issue 直接关的?我们都会回复的
BTW:别人弄的,你调试哪个框架不哭?:)
之前也是选择了很久,用 go-zero 有一段时间了,也提了几个 issue
感觉这个使用起来方便,但是自由度不够了。缓存设计那里有 bug,自带的 logx 库不好用,日志不太好用。
当然按照框架架构写代码还是挺舒服的。不够,我也想去尝试一下新的框架了
go-zero ? go-zero 背后的公司不是好未来么。。观望一下吧
说 kratos 的是不是因为有开源项目 手动 doge
正在用 kratos,觉得还不错
缓存 bug 是指?日志库你完全可以用自己喜欢的
go-zero 我写了 8 年,不停从业务中抽象提炼,发展不会有影响的,而且我们正在捐赠给开源基金会
现在用 rpcx
国内微服务框架
阿里 dubbo-go
头条 kitex
腾讯 tars-go
b 站 kratos
我们最后选择了 kratos,原因
- dubbo-go 感觉被名字局限了,毕竟是 go 版的 dubbo,而不是 go 版的 spring 。当然 dubbo-go 也是朝着更多功能扩展,但感觉还是怪怪的,期待再独立一个项目出来。但是毕竟阿里还是 Java 为主,Java 生态无敌
- 腾讯,每次都让人有种格格不入的感觉,但是确实这里做的最『未来』的,整体性很强。还有一个原因虽然和 tars 没关系,但是微信开发团队真的非常糟糕给腾讯名号蒙羞
- 头条,没什么感觉也没什么推广
- b 站,有概念感、业务实践、也喜欢毛剑老师。唯一缺点就是 git 社区客服戾气太重,有点玩不起的感觉,不知道是不是 b 站人员,可能是最近生活不顺利啥的。
然后为什么要框架,其实如果你只是写『脚本』那完全不需要
但是如果你需要架构层面,那肯定需要这类框架,rpc 框架现在基本都是往 go 框架发展
为什么选国内框架
- 中文太重要了
小项目用不到,大项目直接 k8s+istio
腾讯内部目前在用 trpc, 存量的 tars 项目都在往 trpc 转. 虽然 trpc 还没开源, 但是使用体验很不错, 非常轻量, 可插拔, 兼容各种内部的 rpc 协议(如 tars), http 协议等等, 设计的理念也很先进. 感觉开源出来的话会是一个非常优质的选择
使用简单吗……
设计的理念也很先进,这句可否展开说说?我感觉高性能这块实在看不起依据,易用倒是确实符合实际
腾讯的 trpc-go ,真的 nice
在选择Golang微服务框架时,需考虑业务需求、技术栈、性能、可扩展性、中间件支持、协议支持及社区支持等多方面因素。以下是一些主流的Golang微服务框架及其特点:
- Istio:开源的服务网格解决方案,提供流量管理、安全策略、监控等功能,适用于大规模微服务架构。
- go-zero:基于Go语言的微服务框架,提供代码生成、RPC框架、数据访问层等功能,适合中小型微服务架构。
- go-kit:工具集,提供服务发现、负载均衡等功能,适用于可扩展、可维护的微服务系统。
- go-kratos:基于Protobuf和gRPC,提供快速开发和部署的工具和库,适合高性能微服务架构。
- go-micro:基于gRPC,支持服务发现、负载均衡等,具有良好的可扩展性,适用于大规模微服务架构。
- rpcx:基于gRPC和HTTP/JSON,支持服务注册、发现等,适用于大规模分布式系统。
此外,Gin、Echo等轻量级Web框架也适用于构建简单的HTTP API和微服务。若项目需要高性能、低延迟的Web框架,可考虑Fiber;若需要完整MVC框架和自动生成文档等功能,Beego和Iris是不错的选择。
综上所述,选择哪个框架需根据具体项目需求和技术栈来决定。建议深入了解各框架的特性,结合实际需求做出明智选择。