分布式理论:关于一致性讨论


一、回顾分布式特点

   1.集中式特点

      一台或多台计算机组成中心接节点,所有的数据都存在中心节点上。Client端只负责数据的展示,Server处理数据的存储和处理。显而易见,优点是结构简单容易部署,无需考虑服务多个节点部署,更不用考虑节点之间的协调。缺点是系统性能以来中心节点的性能,无法水平扩展。

   2.分布式特点

     对等:各个节点没有主次之分

     分布:在空间上随意分布,水平扩展,比如我们sinai随意再lf和dx随意添加机器

     并发:对等的节点可能并发访问访问共享资源,如同时访问redis,db,或一个接口

     缺乏全局的时钟:因为分布和对等性,你不知道两个事件发生的前后顺序

     故障不固定:很依赖节点之间的通信,因为网路分区或通信异常会导致机器状态不一致

   3.分布式问题

     通信异常:网路光纤,路由,DNS各种因素导致网络太不可靠了。。。面临重要的两个方面是丢包和包的延迟

     网络分区:整个集群只有一部分之间能正常通信,实际上我们美团服务治理中,SG_agent为部署在各服务节点,通过与服务注册路由中心进行通信,实际承担服务注册、服务发现、动态路由解析、负载均衡等功能及

调用统计上报的应用代理程序。 

    三态:成功,失败,超时

    节点故障:一个分布式集群必须支持异常的节点的摘除,节点的扩容等,比如我们的thrift的server 端节点必须能有服务注册、服务发现等功能

   4.数据库的事务ACID

     ACID各个字母代表什么意思就不用提了,A(原子性,只有成功和失败状态),C(一致性),I(隔离性,各个事物都有自己的数据空间),D(持久性,commit事务的后状态必须是永久的)

     经常听到数据库事务的四层隔离,自己画一个图就清楚了:


为什么涉及到各种级别呢?是为了保证数据的一致性和完整性,级别越高并发性能差,我们数据库一般都设为第二种授权读,避免脏读有保证较好的并发性能,程序中可主动采用悲观锁和乐观锁来控制,即使我们不用看mysql的源码什么的,我们也可以用锁的原理,实现四层隔离,具体mysql怎么实现的还待深入看看,其实是通过行锁、区间锁等实现的乐观锁和悲观锁实现的,四种隔离是这些锁的组合运用。

   5.分布式事务的强一致性CAP

C:一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的 ;

A:可用性,服务必须是24小时可用可访问;

P:分区容错性,出现网络分区故障时,仍然保证一致性很可用性,除非整个集群都down掉;

CAP定理:一个分布式系统无法同时满足CAP要求,只能满足其中的两项。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值