模式演化要保证:

  • 向后兼容 较新的代码可以读取旧代码编写的数据
  • 向前兼容 较旧的代码可以读取较新代码编写的数据

数据编码格式

语言特定格式

  • Python pickle
  • Java java.io.Serializable
  • Ruby Marshal

JSON、XML与二进制变体

二进制变体

  • Message Pack:二进制的 JSON

Thrift 与 Protocol Buffers

Avro

数据流模式

基于数据库的数据流

不同是写写入不同的值

归档存储

基于服务的数据流:REST 和 RPC

RPC 的问题

给人一种本地调用的错觉,却需要面临网络的不确定性:延迟和超时。

基于消息传递的数据流

消息中间件:RabbitMQ、Kafka

分布式Actor 框架:Akka、Erlang OTP