2021-08-06 Go 微服务框架选谁 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
sirnay
V2EX    Go 编程语言

2021-08-06 Go 微服务框架选谁

  •  1
     
  •   sirnay 2021-08-06 10:03:05 +08:00 15752 次点击
    这是一个创建于 1536 天前的主题,其中的信息可能已经有所发展或是发生改变。

    go-zero 、kratos 、micro?

    希望能有使用过比较深的人来综合比较下。

    47 条回复    2022-12-26 09:52:48 +08:00
    waising
        1
    waising  
       2021-08-06 10:06:19 +08:00
    kratos 还有字节的 kitex 可以看下....我们用的原生 grpc
    777777
        2
    777777  
       2021-08-06 10:08:25 +08:00
    蹲,目前在用 go-zero
    yuyoung
        3
    yuyoung  
       2021-08-06 10:36:37 +08:00
    Micro 就不要了,资料少,Kratos 很不错
    ahmcsxcc
        4
    ahmcsxcc  
       2021-08-06 10:38:30 +08:00
    go-zero 、kratos 里选一个吧
    NaVient
        5
    NaVient  
       2021-08-06 10:45:41 +08:00
    kratos 设计理念不错
    Hanggi
        6
    Hanggi  
       2021-08-06 10:48:30 +08:00   4
    说实话,这些都不需要,grpc + k8s 就可以了
    mthaiq
        7
    mthaiq  
       2021-08-06 12:1434 +08:00   2
    @Hanggi 第三代微服务直接用 k8s 做负载均衡,k8s etcd 做注册中心,k8s configmap 做配置中心
    webmasterisadog
        8
    webmasterisadog  
       2021-08-06 12:21:43 +08:00
    @Hanggi 有没有轻量级的微服务架构?适合做写简单的开发和实验用于论文写作。
    damngood
        9
    damngood  
       2021-08-06 12:47:21 +08:00
    grpc + 前置网关
    labulaka521
        10
    labulaka521  
       2021-08-06 13:06:49 +08:00
    grpc+1 写个代码生成就可以了
    PureWhiteWu
        11
    PureWhiteWu  
       2021-08-06 13:08:00 +08:00
    Kitex
    mritd
        12
    mritd  
       2021-08-06 13:11:31 +08:00
    kratos 、go micro 、go kit 吧
    go zero 真的慎用... 看着都不错 用起来全是坑
    masterclock
        13
    masterclock  
       2021-08-06 13:14:01 +08:00
    dapr
    herozzm
        14
    herozzm  
       2021-08-06 13:17:07 +08:00
    golang 不需要什么微服务框架吧 直接开撸挺香啊
    seyoatda
        15
    seyoatda  
       2021-08-06 13:58:30 +08:00
    @mritd go-zero 可否举几个例子?最近也在选微服务框架
    sb137885
        16
    sb137885  
       2021-08-06 13:59:21 +08:00
    k8s 梭哈,再不行 istio,然后 dapr,还有 layotto,哈哈
    mritd
        17
    mritd  
       2021-08-06 14:08:42 +08:00   1
    @seyoatda #15 譬如你想同时暴露 grpc 接口和 http json 接口,那么你必须写 api 层,API 层是自己定义的一个 DSL,还要手撸一遍 rpc 层的结构体,然后手动 "copy" 过去;最难受的是 go zero 的序列化框架是自己写的,就比如序列化常用的 json 、form tag 啥的很多属性都是不支持的;然后你不清楚的情况下还可能会有迷之行为,而且最近开了两个 issue 来看,基本上你的 issue 项目管理者只要认为解决了就直接关了,不会有任何确认的,多了不说了,我也是帮别人弄东西的时候发现他们用了这个框架,我帮忙调试都快哭了。
    yinheli
        18
    yinheli  
       2021-08-06 14:13:25 +08:00
    自研了,gRPC + gRPC-gateway,开源在 github

    主要是让之前的项目,RESTful API 能比较平滑的过渡过来
    bugyang
        19
    bugyang  
       2021-08-06 14:42:36 +08:00
    正在学习 go-zero
    lesismal
        20
    lesismal  
       2021-08-06 14:48:06 +08:00   1
    大而全的微服务框架不适合中小团队直接拿来用,而大团队自家定制、不太需要用别人的

    单就 RPC:
    https://colobu.com/2021/08/01/benchmark-of-rpc-frameworks/
    帖子中的性能数据可能不准确,最好自己跑那个代码实测下,易用性和各方面优劣可用自行对比
    zibber
        22
    zibber  
       2021-08-06 16:29:48 +08:00
    用过 rpcx 和 go-micro 现在项目用的 go micro
    buddyy
        23
    buddyy  
       2021-08-06 17:20:19 +08:00
    我感觉在使用 k8s 情况下,这些微服务框架是不需要的。
    虽然不直接使用,但是有些设计理念是可以借鉴使用的,在适合自己场景下进行改造乃上上策。
    caoyouming
        24
    caoyouming  
       2021-08-06 17:55:54 +08:00
    自己撸,用 gin 做路由不香么
    wizzer
        25
    wizzer  
       2021-08-06 17:56:59 +08:00
    自己造轮子?
    ifconfig
        26
    ifconfig  
       2021-08-06 18:39:29 +08:00   1
    公司全部换成 go-zero 了
    stirlingx
        27
    stirlingx  
       2021-08-06 18:42:23 +08:00
    最好原生 grpc
    rita413413
        28
    rita413413  
       2021-08-06 18:47:33 +08:00
    @stirlingx 原生 grpc 服务发现,均衡负载,都要自己写,那不是很麻烦?感觉 go-zero 还可以吧。开一个接口时,先用 api 上,如果不够用,在将此接口改为微服务。
    windfarer
        29
    windfarer  
       2021-08-06 19:07:01 +08:00
    又来大乱斗了,欢迎来看看我们的 go-kratos
    Lonenso
        30
    Lonenso  
       2021-08-06 19:24:15 +08:00
    用过 rpcx 和 grpc
    GoLand
        31
    GoLand  
       2021-08-07 00:14:30 +08:00
    字节 KiteX 的泛化调用很好用
    dayeye2006199
        32
    dayeye2006199  
       2021-08-07 01:44:19 +08:00
    为啥需要框架? grpc + k8s 就可以起飞了。需要 tracing 熔断 metrics 这类就上个 istio 或者 linkerd 。业务和运维的代码高度解耦化,写起来很清楚的。
    dcoder
        33
    dcoder  
       2021-08-07 05:16:20 +08:00
    kratos... 这框架名字太中二了 LOL
    https://github.com/go-kratos/kratos/blob/main/README_zh.md
    kevinwan
        34
    kevinwan  
       2021-08-07 08:49:17 +08:00
    @mritd 很多个月没来 V2EX 了,用户发给我,我来回答一下哈

    api 是个聚合层,rpc 是基础服务层,你说的 copy 过去,可能是希望 api/rpc 共用一套定义?我比较倾向于单一职责,所以就出现了你说的『 copy 』

    json, form tag 不支持是指啥意思? go-zero 支持 path, form, header, json tags

    能否列一下哪个 issue 直接关的?我们都会回复的

    BTW:别人弄的,你调试哪个框架不哭?:)
    ldmid666
        35
    ldmid666  
       2021-08-07 09:34:18 +08:00
    之前也是选择了很久,用 go-zero 有一段时间了,也提了几个 issue
    感觉这个使用起来方便,但是自由度不够了。缓存设计那里有 bug,自带的 logx 库不好用,日志不太好用。
    当然按照框架架构写代码还是挺舒服的。不够,我也想去尝试一下新的框架了
    statumer
        36
    statumer  
       2021-08-07 13:54:44 +08:00
    go-zero ? go-zero 背后的公司不是好未来么。。观望一下吧
    johnsona
        37
    johnsona  
       2021-08-07 15:13:03 +08:00 via iPhone
    说 kratos 的是不是因为有开源项目 手动 doge
    HarveyZh
        38
    HarveyZh  
       2021-08-07 20:23:18 +08:00
    正在用 kratos,觉得还不错
    kevinwan
        39
    kevinwan  
       2021-08-07 22:50:12 +08:00
    @ldmid666 缓存 bug 是指?日志库你完全可以用自己喜欢的
    kevinwan
        40
    kevinwan  
       2021-08-07 22:53:47 +08:00   1
    @statumer go-zero 我写了 8 年,不停从业务中抽象提炼,发展不会有影响的,而且我们正在捐赠给开源基金会
    Desdemor
        41
    Desdemor  
       2021-08-17 15:03:16 +08:00
    现在用 rpcx
    xmsz
        42
    xmsz  
       2021-08-23 18:15:30 +08:00
    国内微服务框架

    阿里 dubbo-go
    头条 kitex
    腾讯 tars-go
    b 站 kratos

    我们最后选择了 kratos,原因
    - dubbo-go 感觉被名字局限了,毕竟是 go 版的 dubbo,而不是 go 版的 spring 。当然 dubbo-go 也是朝着更多功能扩展,但感觉还是怪怪的,期待再独立一个项目出来。但是毕竟阿里还是 Java 为主,Java 生态无敌
    - 腾讯,每次都让人有种格格不入的感觉,但是确实这里做的最『未来』的,整体性很强。还有一个原因虽然和 tars 没关系,但是微信开发团队真的非常糟糕给腾讯名号蒙羞
    - 头条,没什么感觉也没什么推广
    - b 站,有概念感、业务实践、也喜欢毛剑老师。唯一缺点就是 git 社区客服戾气太重,有点玩不起的感觉,不知道是不是 b 站人员,可能是最近生活不顺利啥的。


    然后为什么要框架,其实如果你只是写『脚本』那完全不需要
    但是如果你需要架构层面,那肯定需要这类框架,rpc 框架现在基本都是往 go 框架发展

    为什么选国内框架
    - 中文太重要了
    wfhtqp
        43
    wfhtqp  
       2021-08-27 11:29:08 +08:00
    kongkongyzt
        44
    kongkongyzt  
       2021-12-26 18:43:14 +08:00
    @xmsz 腾讯内部目前在用 trpc, 存量的 tars 项目都在往 trpc 转. 虽然 trpc 还没开源, 但是使用体验很不错, 非常轻量, 可插拔, 兼容各种内部的 rpc 协议(如 tars), http 协议等等, 设计的理念也很先进. 感觉开源出来的话会是一个非常优质的选择
    chiuan
        45
    chiuan  
       2022-11-08 10:24:30 +08:00
    @kongkongyzt 使用简单吗……
    solitude2
        46
    solitude2  
       2022-12-26 09:51:53 +08:00
    @kongkongyzt 设计的理念也很先进,这句可否展开说说?我感觉高性能这块实在看不起依据,易用倒是确实符合实际
    solitude2
        47
    solitude2  
       2022-12-26 09:52:48 +08:00
    腾讯的 trpc-go ,真的 nice
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5870 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 03:23 PVG 11:23 LAX 20:23 JFK 23:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86