在这篇文章中,我们将讨论以下话题:

  • 在线游戏协议
  • Telegram 端到端加密
  • B-Tree vs. LSM-Tree
  • Markdown + 思维导图工具

在线游戏协议

一种常见做法是使用 RUDP(可靠 UDP)。它在 UDP 之上添加可靠机制,提供比 TCP 更低的延迟并保证准确性。

下图展示了在线游戏中如何实现可靠数据传输以获得最终同步状态:

假设在模拟射击游戏中有一场大战。角色 A、B 和 C 依次开火。游戏服务器如何将状态从游戏服务器传输到游戏客户端?

  • 步骤 1 和 2:角色 A 开火。数据包(数据包 0)发送到客户端。客户端向服务器发送确认。
  • 步骤 3:角色 B 开火。数据包在传输过程中丢失。
  • 步骤 4 和 5:角色 C 开火。数据包(数据包 2)发送到客户端。由于最后一个成功交付的数据包是数据包 0,客户端知道数据包 1 丢失了,因此数据包 2 在客户端缓冲。客户端向服务器确认收到数据包 2。
  • 步骤 6 和 7:服务器一段时间内没有收到数据包 1 的确认,因此重新发送数据包 1。当客户端收到数据包 1 时,所有后续数据包都生效了,因此数据包 1 和 2 变为”已交付”。然后客户端向服务器确认收到数据包 1。此时没有数据包被缓冲。

Telegram 端到端加密

首先让我们定义”安全”的含义。聊天应用中的”安全”聊天通常意味着消息在发送方加密,并且只能在接收方解密。这也称为”E2EE”(端到端加密)。

从这个意义上说,Telegram 安全吗?这取决于。

Telegram 的普通私聊和群聊不是端到端加密

这通常意味着第三方可以拦截并读取你的消息。Telegram 使用以下方法进行安全保护:

  • 加密消息存储在 Telegram 服务器上,但分成几块并存储在不同国家
  • 解密密钥也被拆分并保存在不同国家

这意味着黑客需要从所有地方获取消息块和密钥。这是可能的但极其困难。

秘密聊天是端到端加密的

如果你选择”秘密聊天”选项,它是端到端加密的。它有几个限制:

  • 不支持群聊或普通一对一聊天
  • 仅适用于移动设备,不支持笔记本电脑

B-Tree vs. LSM-Tree

B-Tree

B-Tree 是几乎所有关系型数据库中最广泛使用的索引数据结构。

B-Tree 中信息存储的基本单元通常称为”页”。查找键会向下跟踪键的范围,直到找到实际值。

LSM-Tree

LSM-Tree(日志结构合并树)被许多 NoSQL 数据库广泛使用,如 Cassandra、LevelDB 和 RocksDB。

LSM-Tree 维护键值对,并使用排序字符串表(SSTable)持久化到磁盘,其中键是排序的。

Level 0 段定期合并到 Level 1 段。这个过程称为压缩。

最大的区别

  • B-Tree 实现更快的读取
  • LSM-Tree 实现更快的写入

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP29: Online Gaming Protocol

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。