经典指数          
原因
881
浏览数
0
收藏数
 

在分布式计算系统中,数据的完整性是最重要的。通常数据被存放在集群系统上,但是集群系统中可能同时会有大量的数据读写,并且每时每刻都可能出现机器宕机或者故障,请设计一种存储方案,满足如下要求: 1、保证在一台或两台机器宕机的情况下不丢失数据,并且对应用是透明的。 2、尽可能将数据的读写负载均衡到整个集群机器上。

     举报   纠错  
 
切换
1 个答案
答: 1、(1) 设置一个主服务器,保存所有文件的元数据,文件元数据中存放数据块(包括复制的块)存放的位置(哪个机器)以及文件的一些控制信息;其他机器存放数据块,每个文件数据由多个备份,每个数据块被复制到不同机器上,用户可以自定义复制的份数(至少保证三份),副本的存放策略可以是:一个放在本地机架的节点,一个放在同一机架的另一节点,另一个放在其他机架上。块机器周期性的向主服务器发送信息,对数据进行校验,服务器也周期性的接收这样的信息,如果存放数据的机器宕机,服务器会检测到这种情况,对相关的数据进行增加备份;同时主服务器会将此消息告诉管理员,由管理员增添新的节点;这使得机器的崩溃对应用程序是透明的,底层始终维护多个数据备份,维护的过程用户不可见; (2) 当应用程序请求某个文件的操作时,请求发送到主服务器,由主服务器,决定向哪个机器节点读取数据,因为整个集群存放多个文件的备份,请求哪个备份由主服务器决定,一般请求本地或最近的机器以保证最小的传输负载;几台机子的崩溃对应用程序没有影响; 2、负载均衡 (1) 在写文件时将数据均衡到各个磁盘,可以对各个机器节点的磁盘空间作记录,每次选择磁盘剩余空间大的节点来保存文件或其备份数据; (2)对于每个机器节点记录对应于机器节点的读写进程的数目,在执行读写操作时,主服务器首先确定文件的备份数据存储在哪些节点上,然后查看这些节点的读写进程数目,选择进程数目最少的节点执行读写操作,这样将操作均衡到了集群的各个节点上;这里的思想是从存储空间和进程操作两方面实现负载均衡,显然如果将数据存储均衡了,读写自然就均衡了,但是这不太现实,所以还要考虑实际系统中读写进程的数目,选择读写操作少(进程)的节点进行读写操作; (3)对于负载均衡也可以动态来做,由于节点的失效或者增加,可能导致数据分布的不均匀,当某个节点的空闲空间大于一个临界值的时候,主服务器负责(或分配其他机器节点)自动将其他节点数据迁移到空闲空间大的节点上。
 
切换
撰写答案
扫描后移动端查看本题