探索 Golang 云原生游戏服务器开发,3 分钟快速理解 Nano 通信协议(内含记忆脑图)

简介: 探索 Golang 云原生游戏服务器开发,3 分钟快速理解 Nano 通信协议(内含记忆脑图)

nano 协议格式


两层编码


message

  • route/protobuf 压缩
  • 编码方式可自定义
  • 编码结果传递给 package

package

  • 握手过程
  • 心跳
  • 数据传输编码
  • 编码结果可以通过 tcpwebsocket 等协议传输


协议层


发包

  • Message>Protobuf/JSON Encoder>Nano Message Encoder>Nano Packet Encoder

解包

  • Nano Packet Decoder>Nano Message Decoder>Protobuf/JSON Decoder>Message


Nano Package


封装在面向连接的二进制流的通讯协议


控制包


应用层面的控制流程

  • 客户端和服务器的握手
  • 心跳
  • 服务器主动断开连接的通知


数据包


  • 客户端和服务器之间传输应用数据


nano 数据包格式


  • header
  • body 内容长度,3个byte的大端整数,因此最大的包长度为2^24个byte
  • 0x01 客户端到服务器的握手请求以及服务器到客户端的握手响应
  • 0x02 客户端到服务器的握手ack
  • 0x03 心跳包
  • 0x04 数据包
  • 0x05 服务器主动断开连接通知
  • 包的类型 type(1 byte)
  • 包的长度 length(3 bytes)
  • body
  • 二进制的传输内容
  • 数据内容 body(length bytes)


握手 Package


  • 握手请求
  • user 用户自定义部分
  • sys.version 客户端的版本号
  • sys.type 客户端的类型
  • 系统部分
  • 用户部分
  • 握手响应
  • 可选,用户自定义的握手数据
  • heartbeat 可选,心跳时间间隔(秒)
  • dict 可选,route 字段压缩的映射表
  • protos 可选,protobuf压缩的数据定义
  • 200 成功
  • 500 失败
  • 501 客户端版本号不符合
  • code
  • sys
  • user
  • 正常握手的流程
  • —> handshake request(client)
  • <— handshake response(server)
  • —> handshake ack(client)


心跳 Package


  • 心跳包的length字段为0,body为空
  • 心跳超时时间为2倍的心跳间隔时间
  • 心跳的流程
  • —> heartbeat Client
  • <— heartbeat(wait heartbeat interval)Sever
  • —> next heartbeat (wait heartbeat interval)Client


数据 Package


  • 客户端和服务器之间传输数据所用
  • body 部分是由上层传下来的任意二进制数据
  • package 层不会 对body内容做任何处理


服务器主动断开 Package


  • 如:踢掉某个在线玩家
  • 会先向客户端发送一个控制消息,然后再断开连接


Nano Message


主要作用是封装消息头


标志位(flag)


  • flag(1byte)它决定了后面的消息类型和内容的格式
  • preserved(4 bits)预留4位
  • message type(3 bits)范围为0~7
  • route(1 bit) 表示 route 是否压缩,影响 route 字段的长度
  • message id(0~5 bytes)varints 128变长编码,根据值的大小
  • route(0~256 bytes)根据消息类型以及内容的大小


消息类型(Message Type)


flag 字段的第 2-4 位来确定

  • request
  • ----000- | <message id> | <route>
  • notify
  • ----001- | <route>
  • response
  • ----010- | <message id>
  • push
  • ----011- | <route>


路由压缩标志(Route Compression Flag)


  • [-------0] (flag)
  • <length>1 byte | <utf8 string> (route)
  • [-------1] (flag)
  • <route code> (2 bytes)
相关文章
|
运维 Cloud Native 云计算
云原生架构的演进:从微服务到无服务器计算
在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性和成本效益性,成为推动现代软件开发和运维的关键力量。本文将探讨云原生概念的演变,特别是从微服务架构到无服务器计算的转变,揭示这一进化如何影响应用程序的开发、部署和管理。通过分析实际案例,我们旨在提供对云原生技术未来趋势的洞察,同时指出企业在这一转变过程中可能面临的挑战和机遇。
168 29
|
运维 Cloud Native 开发者
云原生技术演进:从微服务到无服务器的旅程
【8月更文挑战第20天】在数字化时代的浪潮中,云原生技术如同一艘航船,承载着企业转型的梦想与挑战。本文将深入探讨云原生技术的发展路径,从微服务的兴起到无服务器架构的革新,揭示这一技术演进背后的逻辑与动力。通过分析云原生技术的优势、面临的挑战以及未来的发展趋势,我们将描绘出一幅云原生技术演进的宏伟蓝图。
|
运维 Cloud Native 持续交付
云原生架构的演进:从微服务到无服务器计算
【7月更文挑战第28天】在数字化浪潮的推动下,云原生技术不断演进,引领着软件开发和运维模式的革新。本文将深入探讨云原生架构的发展历程,着重分析微服务架构与无服务器计算模型如何相互补充,共同推动现代应用的开发与部署。我们将从微服务的基本原则出发,探索其如何赋能团队快速迭代和扩展应用,进而阐述无服务器计算如何简化资源管理,降低运营成本。通过对比分析,揭示两者结合的优势,为读者提供构建未来云原生应用的洞见。
|
运维 Cloud Native 云计算
云原生架构的演进:从微服务到无服务器计算
【6月更文挑战第30天】 在数字化转型和技术创新的浪潮中,云原生技术以其灵活性、可扩展性和成本效益成为企业IT战略的核心。本文将探索云原生架构的关键概念,从早期的微服务架构到现代的无服务器计算模型,揭示这一演变如何推动企业更高效地开发、部署和管理应用程序。我们将深入讨论这些技术背后的原理,以及它们如何帮助企业实现敏捷性、弹性和自动化运维。
|
Cloud Native 安全 云计算
云原生技术的未来:探索服务网格和无服务器架构
随着企业数字化转型的深入,云计算已成为推动业务创新的核心力量。本文将深入探讨云原生技术的最新发展趋势,重点分析服务网格和无服务器架构如何重塑云计算的未来。通过实际案例和技术解析,揭示这些前沿技术如何解决现代应用部署的复杂性,提高系统的可伸缩性和弹性。文章旨在为读者提供云原生领域的深度见解,并激发对云技术未来发展的思考。
234 0
|
运维 Cloud Native 开发者
云原生架构的演进之路:从微服务到无服务器计算
在数字化转型的浪潮中,企业不断追求更高效、灵活的IT解决方案。云原生技术作为推动现代软件部署的关键力量,其发展经历了从微服务到无服务器计算的转变。本文将深入探讨这一演进过程,揭示它如何重塑应用开发与运维模式,并展望云原生技术的未来趋势。
|
运维 Kubernetes Cloud Native
云原生技术的未来演进:探索服务网格和无服务器架构的融合
随着企业数字化转型的不断深入,云原生技术已成为推动现代软件开发的关键力量。本文深入探讨了服务网格和无服务器架构这两大云原生技术趋势,分析了它们各自的优势以及未来可能的融合点。通过对比分析和案例研究,我们揭示了这两种技术如何互补并共同推进云原生生态系统的发展,同时指出了实践中面临的挑战和潜在的解决方案。 【7月更文挑战第22天】
200 0
|
7天前
|
弹性计算 运维 安全
阿里云轻量应用服务器详解——2025升级到200M峰值带宽
阿里云轻量应用服务器(Simple Application Server)是面向个人开发者及中小企业的轻量级云服务,适用于网站搭建、开发测试、小程序后端等场景。2025年升级至200M峰值带宽,支持WordPress、宝塔面板、Docker等应用镜像一键部署,操作简单,运维便捷。按套餐售卖,不支持自定义CPU内存配置,价格低至38元/年起,是快速上云的高性价比选择。
|
1月前
|
存储 缓存 数据挖掘
阿里云目前最便宜云服务器介绍:38元、99元、199元性能,选购攻略参考
轻量应用服务器2核2G峰值200M带宽38元1年;云服务器经济型e实例2核2G3M带宽99元1年;云服务器通用算力型u1实例2核4G5M带宽199元1年。对于还未使用过阿里云服务器的用户来说,大家也不免有些疑虑,这些云服务器性能究竟如何?它们适用于哪些场景?能否满足自己的使用需求呢?接下来,本文将为您全方位介绍这几款云服务器,以供您了解及选择参考。
|
2月前
|
网络安全 云计算
如何设置阿里云轻量应用服务器镜像?
本文介绍了在阿里云轻量应用服务器上创建与配置镜像的详细步骤。镜像是一种特殊的文件系统映射,可用于快速克隆服务器配置。内容涵盖准备条件、登录控制台、创建实例、生成镜像、下载与设置镜像,以及如何使用镜像启动新实例。适合希望提升服务器部署效率的用户参考。

热门文章

最新文章

推荐镜像

更多