V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
beego
sirnay
V2EX  ›  Go 编程语言

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

  •  1
     
  •   sirnay · 114 天前 · 5366 次点击
    这是一个创建于 114 天前的主题,其中的信息可能已经有所发展或是发生改变。

    go-zero 、kratos 、micro?

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

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

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

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

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

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

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

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

    阿里 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   93 天前
    小项目用不到,大项目直接 k8s+istio
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2247 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:22 · PVG 17:22 · LAX 01:22 · JFK 04:22
    ♥ Do have faith in what you're doing.