概念理论
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
浏览
次