浅谈Eureka和Zookeeper

两个名字和技术类似,都是有服务注册与发现的功能,但两个的技术层面考虑的着重点是不相同的

这里我们要涉及到数据库中的事务,一致性,原子性,持久性,独立性。

这里我们是CAP原理分布式系统的三个指标:

  C:一致性   

  A:高可用性

  P:分区容错

P分区容错:分布式系统中都分布在多个子网络,每一个子网络叫做一个区,分区容错就是区间通信肯能会失败,分区容错无法避免,所以所有的分布式架构

必须要占用P指标

C一致性:写操作之后的读操作,必须返回该值。用户对其中一个提供者V1进行写入User操作,再对其进行读操作,会得到该值,但是当用户对V1进行写操作后,但是在读的时候却是提供者V2,此时由于没有操作V2所以是查询不到之前写入V1的User,前后结果不一致,就不满足一致性

解决:为了让V2也添加进User,就要在G1写入User操作的时候,让V1向V2发送一条信息要求V2也写入User

A高可用性:只要收到用户的请求,服务器就必须要给出响应,不管是有没有User,否则就不满足可用性

CAP定理三进二:

  任何一个分布式架构都无法同时满足这三个特性,且分布式架构不可能放在同一台机器上,所以一定会占用P分区容错

C一致性和A可用性之间的矛盾

 可能微服务之间的通信失败(分区容错)

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

 

 

 

 

 

 

posted @ 2019-11-08 15:13  愤青程序猿  阅读(371)  评论(0编辑  收藏  举报