有没有办法实现简单的 Go 服务 leader 选举?

2023-01-06 18:15:00 +08:00
 teli

需要从服务实例中选出一个 leader ,从事一些必须“全局唯一”的事情。

当 leader 因为各种原因下线后,其它实例要能及时选举出新 leader 。

要求依赖别太重,或者依赖常用组件服务,比如 redis 。还要考虑这个依赖的组件服务可能掉线可能重连。

5281 次点击
所在节点    Go 编程语言
48 条回复
liprais
2023-01-07 12:52:28 +08:00
zookeeper 完事,别给自己找不愉快
Comolli
2023-01-08 02:25:11 +08:00
Redis vs Etcd vs memberlist vs paxos ,m
okayan
2023-01-08 13:07:12 +08:00
teli
2023-01-08 13:18:03 +08:00
@okayan 暂定是 docker swarm ,而非 kubernetes
lance6716
2023-01-08 21:16:03 +08:00
https://pkg.go.dev/go.etcd.io/etcd/clientv3/concurrency#Election.Campaign

麻了现在 golang 看上去很火,怎么看评论好像没啥真正在用的
lysS
2023-01-09 09:49:54 +08:00
楼上提 redis 的是怎么搞的,和在 go 里面用一个锁有什么区别?
Chinsung
2023-01-09 11:26:11 +08:00
一般是集群每台都尝试去做,但是拿到锁的那台再去做,这个都不要求主备一致性的,有啥必要上 paxos 和 raft 这种?
wei2629
2023-01-09 14:36:11 +08:00
用 consul 抢占 session 就行了。

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

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

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

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

© 2021 V2EX