在这篇文章中,我们将讨论以下话题:
- 在线游戏协议
- 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。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。