如何处理来自不同服务器的多个数据库结果的请求
我有云统计(结构化数据::CSV)信息;我必须向管理员和用户公开。
但是为了可扩展性;数据收集将由与各个DB连接的多台机器(性能监视器)收集。
现在管理器(Mgr)负责将请求多播到所有perf监视器;以收集整体统计信息数据以满足单个 UI 请求。
所以问题是:
1)我如何根据Mgr的客户端请求对多个监视器数据进行排序,每个监视器都可以根据客户端请求给出结果;但仍然如何通过java合并多台机器数据?表示如何在内存中执行 sql 聚合/标量(例如 Groupby、orderby、avg)函数,这些函数在 MGR 上从多个集群检索到的所有结果。如何在Java端实现DB sql聚合/标量功能,任何已知的API?我认为我需要的是减少hadoop中mapreduce技术的一部分。
2) 来自 UI 的请求(假设从数据库选择 count(*),其中内存> 1000MB)必须转发到多台计算机。现在,如何将并行请求发送到单个监视器,并且仅在所有节点都响应时才使用?意味着如何等待用户线程直到消耗来自perf监视器的所有响应?如何在 MGR 上为单个 UI 请求触发并行 REST 请求。
3) 我是否必须在 Mgr 和 Perf 监视器上对 UI 用户进行身份验证?
4)你认为这种方法有什么缺点吗?
笔记:
1)我没有选择NoSql,因为数据是结构化的,不需要连接。
2)我没有选择node.js因为我是新手,可能需要更多时间来开发它。另外,我没有开发任何单线程最适合的并发关键。这里只完成数据的推送/检索。无修改发生。
3) 我希望每个监视器都有单独的数据库,或者一个实例至少有两个具有多个集群的数据库实例,以支持更快地访问实时大统计数据。