qidao123.com技术社区-IT企服评测·应用市场

标题: 第四章 数据编码与演化 [打印本页]

作者: 种地    时间: 2024-11-10 22:10
标题: 第四章 数据编码与演化
应用步伐总是增增改改,而修改步伐大多数情况下也在修改存储的数据

编码数据的格式

步伐中至少使用两种情势的数据
语言特定的格式

编程语言对将内存对象编码为字节序列的支持:java中的java.io.Serializable,Python中的pickle,golang中的encoding/gob
存在题目:
JSON, XML,和二进制变体

二进制编码

JSON比XML简便,但与二进制格式相比还是太占空间,如今有很多二进制格式的 JSON(MessagePack,BSON,BJSON,UBJSON,BISON和Smile等)。
JSON,二进制编码长度为66
  1. {
  2.     "userName": "Martin",
  3.     "favoriteNumber": 1337,
  4.     "interests": ["daydreaming", "hacking"]
  5. }
复制代码

Thrift和Protocol Buffers

Thrift
  1. struct Person {
  2.     1: required string       userName,
  3.     2: optional i64          favoriteNumber,
  4.     3: optional list<string> interests
  5. }
复制代码
Protocol Buffers
  1. message Person {
  2.     required string user_name       = 1;
  3.     optional int64  favorite_number = 2;
  4.     repeated string interests       = 3;
  5. }
复制代码

字段是否必需?对字段如何编码没有影响(二进制数据中没有任何字段指示是否必要字段)
字段标签和模式演变

数据范例和模式演变

Avro

Avro是作为Hadoop的子项目在2009年开始的,因为Thrift不得当Hadoop的用例。也使用模式来指定正在编码的数据的结构。 它有两种模式语言:一种(Avro IDL)用于人工编辑,一种(基于JSON),更易于机器读取。
Avro IDL编写的示例模式
  1. record Person {
  2.     string                userName;
  3.     union { null, long }  favoriteNumber = null;
  4.     array<string>         interests;
  5. }
复制代码
等价的JSON表示
  1. {
  2.     "type": "record",
  3.     "name": "Person",
  4.     "fields": [
  5.         {"name": "userName", "type": "string"},
  6.         {"name": "favoriteNumber", "type": ["null", "long"], "default": null},
  7.         {"name": "interests", "type": {"type": "array", "items": "string"}
  8.     ]
  9. }
复制代码
Writer模式和Reader模式

模式演变规则

模式的优点

数据流的范例

数据库中的数据流

在差别时间写入差别的值

架构演变答应整个数据库看起来好像是用单个模式编码的,即使底层存储可能包含用模式的各种汗青版本编码的记载
归档存储

服务中的数据流:REST与RPC

Web服务

当服务使用HTTP作为底层通信协议时,可称之为Web服务
REST
RPC

RPC的缺陷
消息通报中的数据流

消息代理

RabbitMQ,ActiveMQ,HornetQ,NATS和Apache Kafka等消息队列
分布式的Actor框架

分布式Actor框架

位置透明


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4