分布式学习(二)

这次是分布式系统概述。

一)数据分布

数据分布式分布式系统面临的第一个问题,即将数据均匀地分布到多个存储节点,并 在多个节点之间实现负载均衡。这也是分布式系统区别于传统单机系统所在。方式主要有2种

1)哈希分布

  代表系统为Amazon的Dynamo系统。首先就是哈希取模,这是数据结构都会说的。然后如果哈希函数的散列性好的话,可以将数据比较均匀地分布到集群中去,但是这是很困难的。因为如果按照主键散列,同一个用户id下的数据可能被分散到多台服务器,这会使得一次操作同一个id下的多条记录变得困难;如果按照用户id散列,容易出现“数据倾斜“(可以看看hadoop的数据倾斜)问题,即某些大用户 数据量很大,无论集群的规模有多大,这些用户始终由一台服务器处理。

  处理大用户问题一般有两种方式,即手动拆分和自动拆分。

传统的哈希分布算法的一个问题是:当服务器上线或者下线,N值发生变化,数据映射被打乱,几乎所有的数据都需要重新分布,这将带来大量的数据迁移。比较好的解决就是采用一致性哈希算法。

大致思想如下:给系统中每个节点分配一个随机token,这些token构成一个哈希环。执行数据存放操作时,先计算Key(主键)的哈希值,然后存放到顺时针方向第一个大于或者等于该哈希值的token所在的节点,具体可参考网络上。

2)顺序分布

哈希散列破坏了数据的有序性,只 支持随机读取,不 支持顺序扫描。顺序分布在分布式表格系统中比较常见。它于B+树数据结构比较类似。


二)复制

  为了保证分布式存储系统的高可靠和高可用,数据在系统中一般存储多个副本,当某个副本所在的存储节点出现故障时,分布式存储系统能够自动将服务切换到其他的副本,从而实现自动容错。分布式存储系统通过复制协议将数据同步到多个存储节点,并确保多个副本的数据一致性。

1)强同步复制:能保证存储系统的一致性,然而,当主备副本之间出现网络或者其他故障时,写操作将被阻塞,系统的可用性无法满足。

2)异步复制:保证系统的可用行,一致性无法做到。

存储系统设计时需要在一致性和可用行之间权衡,即三种模式中的最大可用性模式。


三)容错

  简单来说就是故障检测和恢复。这里使用租约机制进行故障检测,即带有超时时间的一种授权,假设A需要检测机器B是否发生故障。A可以给B发租约,B持有的租约在有效内次允许提供服务,否则主动停止服务。B的租约快要到期的时候向机器A重新申请租约。如果出现故障,B的租约过期,从而A能确保B不再提供服务。


四)分布式协议

1)2PC(Two-phase Commit)两阶段提交协议。

 具体内容就不说了,自己看。它是阻塞协议,执行过程中需要锁住其他更新,且不能容错。

2)Paxos协议

  Paxos协议用来实现当主节点出现故障,系统需要选举出新的主节点的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值