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

go-micro 生产环境怎么使用的?服务升级是否需要停服?

  •  
  •   kaxi · 2018-10-22 17:36:59 +08:00 · 4852 次点击
    这是一个创建于 2229 天前的主题,其中的信息可能已经有所发展或是发生改变。

    go-micro 生产环境怎么使用的?服务升级是否需要停服? 还有如果当流量增大的时候,需要增加服务器,又是怎么部署的,一般生产环境是不是 go-micro 独立部署在一台服务器上?如果需要搭建集群又是怎么实现的?

    第 1 条附言  ·  2018-10-22 19:32:26 +08:00
    我现在有点懵的是,go-micro(Dubbo)作为微服务治理框架,管理着各种各样的微服务应用,维护着服务发现,负载均衡,健康检查等等。目的是将应用解耦,并且提高系统可靠性,可是 go-micro(Dubbo)在这个过程中其实也就形成了控制中枢,如果自身一旦挂掉岂不是形成单点故障了?那么为了避免单点故障采用集群部署,那么谁又来管理他的集群状态呢???

    哪位大佬跪求解答啊!万分感激
    7 条回复    2019-06-14 11:19:28 +08:00
    misaka19000
        1
    misaka19000  
       2018-10-22 19:36:31 +08:00 via Android
    keepalived
    heww
        2
    heww  
       2018-10-22 21:09:13 +08:00   ❤️ 1
    client 有重试机制的话,不需要停止服务,每个 srv 部署多份就可以了。

    go-micro 只是一套 lib,每个 srv,api 运行自己的代码逻辑。它们向 registry 中注册自己的信息,client 根据名称从 registry (默认是 consul) 中获取 srv 的地址 ( ip:port )然后发送 http 请求 (这个看具体选择的 transport )。

    有单点故障的是 consul 这种 registry,但 consul 可以部署集群。
    heww
        3
    heww  
       2018-10-22 21:14:40 +08:00   ❤️ 1
    我们在好几个项目中使用过了 go-micro,用起来还算顺手。

    用 protobuf 做数据编码的话,注意 zero 值在 Marshal 到 model 时是会被 ignore 的,这个时候需要使用 FieldMask。
    kaxi
        4
    kaxi  
    OP
       2018-10-22 23:33:39 +08:00
    @heww 请问一下如果部署了多份 srv client 和 srv 的代码应该是怎么样子的? GitHub 上有没有类似的开源项目,我去学习学习
    janxin
        5
    janxin  
       2018-10-23 09:55:37 +08:00
    go-micro 是 golang 的那个 lib 吗?那个服务状态由服务发服务管理的呀?是不是理解出现了偏差?
    ZSeptember
        6
    ZSeptember  
       2018-10-23 11:07:44 +08:00
    你应该去了解一下什么叫注册中心。
    无状态的服务,扩容的时候,直接起新服务器就可以了,会自动注册到注册中心,然后 consumer 的负载均衡就会发现新的服务实例。
    服务升级,如果接口没有 breaking change 也不用停服,一是启动快,二是是服务调用都有重试功能,这个实例不行换下一个实例。
    thomaswang
        7
    thomaswang  
       2019-06-14 11:19:28 +08:00
    @heww 如何部署 srv 的代码,是启动新的 srv, 自动注册到 consul, 那如何停止老的 srv 呢, 老的正在提供服务, 那不是要终端了吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3157 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:32 · PVG 21:32 · LAX 05:32 · JFK 08:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.