为了让淘宝的朋春大牛来指点一下,我一口气写了三篇文章放这了,也不知道他会不会看到,并指点一下
在做”流式计算“上有一定的经验,一直在计划把我的流式计算控制模块用DSL描述出来,这样我就不用来回的把大量服务组装成千篇一律的async-query之类的server了,而是直接用编译器生成我的server,我甚至做了个半成品的server生成器了,那次听了淘宝的张轩丞(朋春)讲的 ”异构数据源的整合“,发现这就是我想要的,虽然那次他提到了流式计算,但没明确的将”异构数据源的整合“和”流式计算“放一块来讲。
我带个头来说一下
为了写这篇文章特意写了上一篇【流式计算的总结】,其中有个中心模式,简单描述一下就是:一个control-server,要完成一件事情,它需要从N个不同server拿到不同的数据,以完成自身的计算,而自身的计算不推荐太大,甚至是不用计算,只是数据的adapter;
流式计算的需求:
如果N个不同的server,是非常独立的server,可重用性非常高;那么我们有可能可以利用这N个server,组装成多个不同的control-server,如果这些control-server不需要计算的话,那么他就是纯粹的adapter + aysnc-io(我猜这也是朋春选择node.js的原因之一),这样我们会发现这些control-server基本上是千篇一律,可以进行更高一级的抽象;
朋春需求二(我猜的可能不对哦):
他们有N种不同的数据,希望有一层可以将这些数据重新组织,提交给用户,显然数据重新组织的方式是非常多样性的,以致每次一个新的需求都得做数据的adapter+async-io;
从算法的角度来看这个问题,大家都想解决一个问题就是:将不同域的数据进行归一,字面上来看就是”异构数据源“的”整合“;
细想这个问题是个很夸张很大的问题,因为好像所有的server都可以将它归结为这类问题,所以它肯定得有很大的约束。
(以下纯粹的个人观点,很希望朋春大牛来指点)
当然还有个最重要的问题要弄清楚:到底是否可能做一个底层框架,能够支持“任意”或者大量的整合;我不知道!// =======来个NB的分割线========
// =======来个NB的分割线========
// =======来个NB的分割线========
如何约束?
其实我已经说过了:
- 主要就是对外请求数据;
- 基本上只涉及到纯粹的数据adapter,此adapter仅仅为下一个请求或者用户需要;
- adapter的形式应该是有限的
怎么做?(没做过,先发表一下拙见,然后坐到大牛来指点)
- 要达到高效毫无疑问用异步IO,因为本身没啥计算,都是网络IO;
- 数据的adapter纯粹是一种机制性的,支持A2B,B2C,A2C,等等,用户自定义各种不同的adapter;
- query-parser
- query的执行计划,是定死的还是动态的?
- query的执行
- 还有啥?
// =======后续的分割线========
// =======后续的分割线========
// =======后续的分割线========