我有很多备用的intel linux服务器(数百个),并希望在Web托管和文件共享环境中将它们用于分布式文件系统.这不适用于HPC应用程序,因此高性能并不重要.主要要求是高可用性,如果一台服务器脱机,存储在其硬盘上的数据仍可从其他节点获得.它必须通过TCP/IP运行并提供标准POSIX文件权限.
我看了下面的内容:
Lustre(http://wiki.lustre.org/index.php?title=Main_Page):非常接近,但它不为节点上的数据提供冗余.您必须使用RAID或DRBD创建数据HA.在Sun和Open Source的支持下,它应该存在一段时间
gfarm(http://datafarm.apgrid.org/):看起来它提供了冗余,但代价是复杂性和可维护性.不像Lustre那样得到支持.
有没有人对这些或任何其他可能有效的系统有任何经验?
我使用的 API 需要多次请求才能获取搜索结果。之所以这样设计,是因为搜索可能需要很长时间(> 5 分钟)。初始响应立即返回有关搜索的元数据,该元数据用于后续请求,直到搜索完成。我不控制 API。
search_cookie(a String) 和search_completed_pct(an Int)search_cookie附加到URL。例如https://api.com/sessions/results/c601eeb7872b7+0search_completed_pct== 100)search_completed_pct是搜索的进度,将在 0 到 100 之间。search_completed_pct== 100)我在这里找到了很多类似的帖子,很多帖子都使用了调度组和 for 循环,但这种方法对我不起作用。我尝试了一个 while 循环,但在变量作用域方面遇到了问题。调度组对我也不起作用。这闻起来像是走错了路,但我不确定。
我正在寻找合适的设计来进行这些递归调用。我应该使用委托还是闭包+循环?我碰壁了,需要一些帮助。
下面的代码是我尝试过的总体思路(为了清晰起见进行了编辑。没有 dispatch_groups()、错误处理、json 解析等)
视图控制器.swift
apiObj.sessionSearch(domain) { result in
Log.info!.message("result: \(result)")
})
Run Code Online (Sandbox Code Playgroud)
apiObj.swift
func sessionSearch(domain: String, sessionCompletion: (result: SearchResult) -> ()) {
// Make request to /search/ url
let task = …Run Code Online (Sandbox Code Playgroud)