分布式特点理解

Posted lm970585581

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式特点理解相关的知识,希望对你有一定的参考价值。

分布式环境特点

分布性

地域,区域,机房,服务器不同导致分布性

并发性

程序运行中,并发性操作很常见,比如同一个分布式系统中的多个节点,同时访问一个共享资源(数据库,分布式存储)

无序性

进程之间的消息通信,会出现顺序不一致的问题。

 

分布式环境面临问题

各个服务节点通信

网络本身的不可靠,因此涉及到一些的网络通信问题(每一个分布式项目都必须面临问题)。

网络分区(脑裂)

当网络发生异常情况的时候,导致分布式系统中部分节点之间网络延时不断变大,最终导致组成分布式系统所有节点中,只有部分节点能够正常通信。分布式系统出现小集群问题

三态问题

分布式架构 成功,失败,超时【网络问题】三种状态

分布式事务问题

ACID(原子性,一致性,隔离性,持久性) => 事务特征

原子性: 整个事务操作过程中,所有操作要不全部成功,要不就全部失败。

一致性: 整个操作过程中所有数据操作前后保持一致

隔离性: 事务和事务之间操作是完全隔离。

持久性:事务一旦提交成功,所有数据不能更改。

 

分布式理论:

CAP

Consistency (一致性) :数据在多个副本中时刻保持一致。

强一致性: 同一个时刻,每一个节点中的数据都是一致的。

弱一致性(最终一致性): 允许在一小个时间段内容,各个节点上面的数据部分不一致,但是最终得到结果是一致的。(消息队列,异步方式)

Availability (可用性)

系统总能在规定时间内,处理完用户的请求。

Partition Tolerance(分区容错)【最典型的的脑裂问题】

分布式系统在遇到任何网分区故障的时候,仍然需要保证对外提供满足一致性和可用性的服务。

一个分布式系统中无法满足以上三个条件,只能满足2个

放弃P=> 将所有的数据都在一个分布式节点上面[单点故障],放弃系统扩展性问题。(分区容错在分布式系统中是必须存在的)

PA 放弃强一致性,保留数据的最终一致性,承诺一个时间让数据达到一致状态

PC 放弃可用性, 系统一旦出现故障问题,在系统故障恢复期间是无法对外提供服务的。

只针对非关系型数据库(NOSQL)

 

Base

Bascially Avaliable(基本可用)

允许损失部分可用性,保证核心业务可用。

Soft-State (软状态/弱性事务)

系统中存在一个中间的状态,这个中间状态不会影响系统整体可用。(使用异步方式处理)

Eventually Consistency(最终一致性)

允许在一小个时间段内容,各个节点上面的数据部分不一致,但是最终得到结果是一致的。

 

中心化和去中心化

中心化: 分布式系统中每一个节点按照角色分工(zk集群,leader,follower,observer)

存在最大的问题:领导出现故障,导致集群问题。

主备.(潜在问题: 领导管理能力问题)

zookeeper/etcd

去中心化: 最重要的问题是脑裂问题。leader不是固定的,如果leader出现问题,会动态选出新的leader也可以理解成去中心化

以上是关于分布式特点理解的主要内容,如果未能解决你的问题,请参考以下文章

对于Java的深入理解及其特点--面试

Spark面试题——说下对RDD的理解?RDD特点算子?

hadoophivehbase的理解

带你深入理解 Redis分布式锁...

集群,负载均衡,分布式的理解

玩转Redis-老板带你深入理解分布式锁