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

2018-10-22 17:36:59 +08:00
 kaxi

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

4711 次点击
所在节点    Go 编程语言
7 条回复
misaka19000
2018-10-22 19:36:31 +08:00
keepalived
heww
2018-10-22 21:09:13 +08:00
client 有重试机制的话,不需要停止服务,每个 srv 部署多份就可以了。

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

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

用 protobuf 做数据编码的话,注意 zero 值在 Marshal 到 model 时是会被 ignore 的,这个时候需要使用 FieldMask。
kaxi
2018-10-22 23:33:39 +08:00
@heww 请问一下如果部署了多份 srv client 和 srv 的代码应该是怎么样子的? GitHub 上有没有类似的开源项目,我去学习学习
janxin
2018-10-23 09:55:37 +08:00
go-micro 是 golang 的那个 lib 吗?那个服务状态由服务发服务管理的呀?是不是理解出现了偏差?
ZSeptember
2018-10-23 11:07:44 +08:00
你应该去了解一下什么叫注册中心。
无状态的服务,扩容的时候,直接起新服务器就可以了,会自动注册到注册中心,然后 consumer 的负载均衡就会发现新的服务实例。
服务升级,如果接口没有 breaking change 也不用停服,一是启动快,二是是服务调用都有重试功能,这个实例不行换下一个实例。
thomaswang
2019-06-14 11:19:28 +08:00
@heww 如何部署 srv 的代码,是启动新的 srv, 自动注册到 consul, 那如何停止老的 srv 呢, 老的正在提供服务, 那不是要终端了吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/499943

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX