为什么 RPC库在序列化库时候要考虑版本兼容性?

接口变化

  1. 版本兼容性

    • Ceph 的序列化格式设计时考虑了版本兼容性,可以在不中断服务的情况下升级系统。它可以通过类型版本号来处理不同版本之间的数据兼容问题。
    • 其他序列化格式也提供版本控制机制,但实现方式可能不同,例如,Protocol Buffers 使用字段标签和默认值来管理版本。

类型编码

  • Ceph 的序列化格式包括类型信息,这使得它可以灵活地处理不同的数据类型,包括复杂的自定义数据结构。
  • 其他格式也有类型编码,但它们通常使用预定义的 schema 或 IDL(接口定义语言)来描述数据结构

如何学习

在本文中,我将试着去回答liunx 内核参数: Q1 (Why): 为什么需要协程? 我们会一起回顾协程出现的历史背景,当时要解决什么问题;同时,现在是什么场景,需要使用协程来进行处理?为什么进程或者线程不能够很好地满足当下的使用场景? Q2 (What): 到底什么是协程? 我们一直在谈论协程。由于协程中包含有「程」这个字眼,因此经常被拿来与进程线程进行对比,称协程为「用户态线程」;但又有人从协程实现的角度,说「协程是一种泛化的函数」。这就把我们给绕晕了。我们不禁要问,到底什么是协程?在本次分享中,我会试着进行回答。 Q3 (How): 怎么实现协程 (库)? 在回答了协程是什么之后,第三个问题就紧随而来,我们可以自己去实现一个简单的协程或者协程库吗?如果可以实现,那我们应该怎么实现呢? Q4 (Usage): 使用协程时需要注意什么? 通过实际编码实现一个简单的协程库后,我们再来看 libco 的实现,就会清晰明了。我们会在第四部分介绍使用协程时需要注意的一些问题。 这就是我本次分享想要达成的目标 —— 回答这四个问题。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 一、这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题 

 二、这个技术的优势和劣势分别是什么 

三、这个技术适用的场景。任何技术都有其适用的场景,离开了这个场景

四、技术的组成部分和关键点。

五、技术的底层原理和关键实现

六、已有的实现和它之间的对比