do_choose_write_nodes(Nodes, K, Exclude, BlackList) ->
% Node selection algorithm:
% 1. try to choose K nodes randomly from all the nodes which have
% more than ?MIN_FREE_SPACE bytes free space available and which
% are not excluded or blacklisted.
% 2. if K nodes cannot be found this way, choose the K emptiest
% nodes which are not excluded or blacklisted.
Primary = ([N || {N, {Free, _Total}} <- Nodes, Free > ?MIN_FREE_SPACE / 1024]
-- (Exclude ++ BlackList)),
if length(Primary) >= K ->
{ok, ddfs_util:choose_random(Primary, K)};
true ->
Preferred = [N || {N, _} <- lists:reverse(lists:keysort(2, Nodes))],
Secondary = lists:sublist(Preferred -- (Exclude ++ BlackList), K),
{ok, Secondary}
end.
对于这种选取方式,存在一些疑问,如一次性选取满足条件的k个复制节点,代码的实际执行和注释的原理有不符的情况,且
在云存储中要考虑fault tolerence,如果要求复制3次儿此时条件有限的话可以先复制2次或更少,其他的采取事后补全的方式,
这段代码不能保证选取到宣称的数目,没有明显的验证
分享到:
相关推荐
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
大数据计算服务是阿里云提供的一个快速、完全托管的TB/PB级数据仓库解决方案,它叫做MaxCompute,原名ODPS。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够快速解决用户海量数据计算...
【SSM云学习笔记系统】是一个综合性的项目,它结合了Spring、SpringMVC和MyBatis(简称SSM)三大Java开发框架,以及云技术,用于构建一个高效、便捷的学习笔记管理平台。这个系统可能涵盖了用户登录注册、笔记创建、...
云的学习笔记系统代码 java云的学习笔记系统代码 基于SSM的云的学习笔记系统代码 1、云的学习笔记系统的技术栈、环境、工具、软件: ① 系统环境:Windows/Mac ② 开发语言:Java ③ 框架:SSM ④ 架构:B/S、MVC ⑤ ...