Go游戏服务器开发的一些思考(十九):服务器架构之服务发现

本文探讨了在游戏服务器架构中引入服务发现的重要性,特别是在手游时代,随着服务器规模的扩大,动态服务发现变得必要。文章重点介绍了etcd,一个用Go语言编写的工具,用于服务注册和发现,并提供了etcd的搭建、工作流程和代码演示,帮助开发者理解如何在Go项目中应用服务发现。
摘要由CSDN通过智能技术生成

背景

在端游时代,通常是按区开服。每个区内服务器数量有限。后端程序员,可以简单的在配置文件中,填写相关服务器信息。服务器通过配置文件来知晓其他服务器信息,然后互连。

到了手游时代,特别是大区大服类型的手游出现。有了不间断提供服务的需求。后台管理的服务器数量规模不定,需要支持动态缩减。像腾讯的不少游戏,都是上千台物理服务器组成。

为了应对上述的变化,服务发现的概念开始在服务器架构中流行起来。

作用

  • 简化配置,架构内只需要知晓发现服务的地址
  • 通过发现服务了解架构内所有服务的运行状态
  • 让架构方便的对接目前流行的运维工具。如Docker Swarm

实现

市面上有不少相关产品,这里列举几个比较有名的:

  • zookeepr
  • etcd
  • consul

上面的都有很多人在用,自然都各有优点。这边讲的Go服务器。而etcd就是使用go来写的。因此下面着重对etcd做下介绍。

etcd介绍

etcd的github地址:

mqantmqant 是一款基于 Golang 语言的简洁,高效,高性能的分布式游戏服务器框架,研发的初衷是要实现一款能支持高并发,高性能,高实时性的游戏服务器框架,也希望 mqant 未来能够做即时通讯和物联网方面的应用。特性分模块机制基于 golang 协程,开发过程全程做到无 callback 回调,代码可读性更高RPC 支持本地和远程自动切换远程 RPC 默认使用 rabbitmq,未来可以添加更多种类的通信协议网关采用 MQTT 协议,无需再开发客户端底层库,直接套用已有的 MQTT 客户端代码库,可以支持IOS,Android,websocket,PC 等多平台通信现如今只有多进程的架构才能达到支撑较多在线用户,降低服务器压力,降低单点故障所带来的影响等要求,因此一个真正高可扩展的游戏运行架构必须是多进程的。然而在游戏开发和运营也是按步骤阶段性进行的,尤其是现如今服务器硬件设备配置也越来越高的前提下,在游戏刚开始运营时单台服务器就足够支撑了,况且多进程部署所带来的运维成本也相对较高。mqant 的设计思想是在能用单台服务器时能让充分挖掘服务器的性能,而在需要多进程时再通过简单的配置就可以实现分布式部署。mqant 游戏服务器的运行架构mqant 服务器是按模块来划分功能模块的,例如 用户管理,在线聊天,战斗平台等等都应该划分为独立的模块模块之间通过 RPC 通讯,mqant 底层会根据实际情况选择 rpc 数据交互的通信渠道,在调用模块在同一个进程的情况下直接使用 golang chan 通讯,因此同进程内模块通信性能不受影响。 标签:mqant
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fananchong2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值