YY的数据交换总线

6 月 6th, 2010 | Posted by | Filed under 架构设计

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.penglixun.com/tech/architecture/data_exchange_bus.html

数据交换是目前我们非常头痛的一件事情,数据仓库从数据库拉数据,不同的IDC之间要相互同步数据,一旦结构变更,没有及时的通知到一方,数据交换就出问题了,靠解日志的方式,也多少存在一些问题。
这些问题的根源都是一个问题,异构性。
Java的成功让我们知道,解决异构性的最好方案就是虚拟机,这种虚拟化机制能不能用到我们的数据交换中呢?
企业系统总线可能是一个可以借鉴的方案,我这里就YY了一个数据交换总线,Data Exchange Bus。

YY的数据交换总线

在DEB架构中,客户端并不直接访问数据库,而是访问DEB的访问接口。每个连上来的应用需要连接不同的数据库,怎么分辨,这里引入“数据通道”的概念,我们称一个点对点的数据连接为一个数据通道,每一个源点发出的请求,会被分发到与它连接的每个数据通道中,这个分发的任务,就由数据路由模块完成。数据路由模块还应该有一个虚拟化功能,将多台分库的数据源虚拟为一个单点数据源,暴露给数据通道控制器时就是一个点。
由于是异构系统,所以需要对各种数据库之间不同的SQL进行转译,一个方式是在数据通道里配置客户端结点的SQL版本和目标结点的SQL版本,然后SQL翻译模块进行翻译。还有一种办法就是规定客户端使用我们指定的SQL版本,例如SQL92,这样SQL翻译模块做起来就简单多了。
数据路由分发请求后,如果SQL要求排序分组等操作时怎么办?这个时候就需要做分布式排序操作,这恐怕是这里最难实现的。通过分布式计算系统提供基本的MapReduce接口,然后分布式排序引擎对每个分库选出来的数据分别排序,然后做归并,直接返回给用户,如果还存在分组,那么数据传递给分布式分组函数引擎,对排序后的数据再进行分组加工,然后返回给客户端。

其实这里面的每个模块,我们都是可以实现或者已经实现的,但是却没有有效的整合在一起,做成一套整体的数据交换平台。我这里纯属YY一下。

目前还没有任何评论.