概念理论

CAP

分布式系统的3个指标,这3个指标只能同时满足两个

  • Consistency:一致性
  • Availability:可用性
  • Partition tolerance:分区容错性

Consistency:一致性

概念

写之后进行读,能读到值即满足一致性

主要问题

写入集群中A机器,读B机器。B机器数据未同步前数据不是最新的。

解决办法

写入到集群中A机器时,在自身保存完毕并确保同步到B机器后,再返回写入成功。因此写入有延时。

Availability:可用性

概念

服务收到请求后,要立即回答

主要问题

与上述一致性有冲突,网络故障时也有影响

Partition tolerance:分区容错性

概念

集群中各个区之间是否允许有网络故障问题

主要问题

分布式系统必然肯定要允许,所以p必须保证。从而 c、a 只能选一

可用性与一致性矛盾

一致性和可用性,为什么不可能同时成立?答案很简单,因为可能通信失败(即出现分区容错)。

如果保证 G2 的一致性,那么 G1 必须在写操作时,锁定 G2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,G2 不能读写,没有可用性不。

如果保证 G2 的可用性,那么势必不能锁定 G2,所以一致性不成立。

综上所述,G2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求一致性,那么无法保证所有节点的可用性;如果追求所有节点的可用性,那就没法做到一致性。

RPC

构成:

  • RPC协议:基于http,或者基于tcp自己定义协议
  • 序列化机制:JSON、xml、java自带的,或者开源第三方的。发送参数、返回结果对象
  • 代理:java的动态代理,切入转发逻辑

序列化协议

  • java原生(ObjectInputStream)
    • 不能跨平台
    • 体积大,性能差
  • protobuf(potike)
    • 谷歌出品,本质是一种结构化数据描述文件
  • Thrift(θrɪft)

发布于 2020/06/15 浏览