背景
在端游时代,通常是按区开服。每个区内服务器数量有限。后端程序员,可以简单的在配置文件中,填写相关服务器信息。服务器通过配置文件来知晓其他服务器信息,然后互连。
到了手游时代,特别是大区大服类型的手游出现。有了不间断提供服务的需求。后台管理的服务器数量规模不定,需要支持动态缩减。像腾讯的不少游戏,都是上千台物理服务器组成。
为了应对上述的变化,服务发现的概念开始在服务器架构中流行起来。
作用
- 简化配置,架构内只需要知晓发现服务的地址
- 通过发现服务了解架构内所有服务的运行状态
- 让架构方便的对接目前流行的运维工具。如Docker Swarm
实现
市面上有不少相关产品,这里列举几个比较有名的:
- zookeepr
- etcd
- consul
上面的都有很多人在用,自然都各有优点。这边讲的Go服务器。而etcd就是使用go来写的。因此下面着重对etcd做下介绍。
etcd介绍
etcd的github地址: