好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

粗看WASP:Alibaba的海量数据分布式数据库探索

Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ == 是什么 == Wasp 是阿里集团开发的基于 HBase 的一个数据库方案,其根本出发点是仿效 Google 的 Megastore ,“在HBase系统上不牺牲线性拓展能力的同时又能提供跨行事务、索引、SQL的功

Email:colorant at 163.com

BLOG:http://blog.csdn.net/colorant/

== 是什么 ==

Wasp 是阿里集团开发的基于 HBase 的一个数据库方案,其根本出发点是仿效 Google 的 Megastore ,“在HBase系统上不牺牲线性拓展能力的同时又能提供跨行事务、索引、SQL的功能”

== 架构原理 ==

其设计原理可以参考 Megastore 的相关论文, Wasp 自己的相关设计使用文档可以在下面两个地方找到

https://github.com/alibaba/wasp/wiki/Chinese

http://wenku.baidu.com/view/c85f50d984254b35eefd345c.html

Megastore 框架的核心思想是将数据分割成不同的 EntityGroup , EntityGroup 的数据备份是跨 Datacenter 存放的,在 EntityGroup 内部提供完整的 ACID 支持,保证数据写操作在所有数据中心的同步备份。


从具体实现上来看, Wasp 并没有实现 Megastore 在跨 Data Center 方面的相关设计思想,仅仅只是采用了 Entity Groups 这样的方案来划分和管理数据。

Megastore 在很多设计上都是围绕超大规模的数据的并发这样一个核心思想,比如 Entity Groups 的跨地域备份,读数据时非主从式的平等节点由 Paxos 动态选主的思想等等,都是为了保证读操作时的去中心化,以提高性能,而 Wasp 的架构方案更像 HBase 自身的方案,存在 FMaster 节点和 FServer 节点,通过 Zookeeper 确定当前 FMaster ,每个 FServer 管理若干 Entity Groups ,基本还是固定的主从中心式的。在 Entity Group 的使用上, Wasp 则基本保留了 Megastore 的原始设计,通过 RedoLog / MVCC / 跨 Entity 两阶段提交等方式解决并发读写的一致性问题

== 具体实现 ==

Wasp 使用 Alibaba 自己的 Druid 项目实现 SQL 语法的解析,采用 Netty 和 Protobuf 构建服务器内部通讯协议框架。

Wasp 的数据主要映射为 HBase 上的 4 类表,全局的 _FMETA_ 表记录所有 Wasp 表的 meta 信息,每个 wasp 表数据对应的 entity 表,相同 Entitygroup Key 管辖下所有表对应的 Redolog 表,以及索引表。

目前 Wasp 对 SQL 的语法支持还很简陋,以 Query 为例,仅支持 Equal condition 和索引上的 Compare 类 Range condition 。对 Int 等数据结构的支持,在比较操作中也存在 bug ,其它稍微复杂一点的 SQL 语法,如 UDF , limit, having, group by, join, order by 等等操作目前都是没有的,当然这可能也取决于 wasp 的具体应用场合,或许只需要最简单的 Equal 和特定字段上的 Range condition 类的查询。

此外从 SQL Plan 实现的角度来看,似乎目前只是简单的转换为 Get/Put/Delete 等 HBase 操作,以 HBase 的角度来看是纯粹的客户端应用程序,没有使用任何 Hbase RS 端的能力,如 filter,coprocessor 等等加以优化,因此如果要实现 Aggregation 类的功能,在性能上大概会受到比较大的影响。

== 总结 ==

总体看来, Wasp 并不能提供一个海量数据跨数据中心的解决方案,其规模受单个 Hbase cluster 所限,因此一定程度上来说和 MegaStore 所解决的目标问题还是有很大差距的, Wasp 更多的是在 HBase 之上提供一个增强的方案,提供简单的 SQL 接口,和跨行事务的支持。如果光从 SQLon HBase 的角度上看,与 SaleForce 的 Phoenix 有很大的差距。但在跨行事务支持方面还是优于 Phoenix 的 ( Phoenix 的在事务方面的支持几乎完全取决于 HBase 自身的能力),代码功能等目前看来还不成熟,还要看将来的发展情况。当然,从代码框架,设计模式等方面上看,作者的编程功力还是很不错的,要学习。

我只是快速的了解了一下 Wasp 的实现,自身能力有限,所以不保证以上看法的准确性,如有偏差还请指正。

查看更多关于粗看WASP:Alibaba的海量数据分布式数据库探索的详细内容...

  阅读:37次