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 · 14947 次点击
    这是一个创建于 1239 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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:14:34 +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
    小项目用不到,大项目直接 k8s+istio
    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   ·   实用小工具   ·   1467 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:11 · PVG 01:11 · LAX 09:11 · JFK 12:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.