InfoQ

InfoQ

文章

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

专访开源项目Amoeba架构师陈思儒

作者 冯大辉 发布于 2008年11月28日

领域
架构 & 设计,
运维 & 基础架构,
语言 & 开发
主题
Java ,
架构 ,
数据库设计
标签
分布式编程 ,
数据库

估计使用MySQL Proxy的很多数据库技术人员都已经熟悉了,前不久国内也有开发者发布了一个Amoeba(变形虫)项目,这个项目专注分布式数据库Proxy开发,引起了数据库社区广泛的关注。DBA notes网站站长冯大辉(Fenng)有幸代表InfoQ中文站采访了该项目的架构师和主要开发者陈思儒。

Fenng:思儒你好,很高兴能接受我代表InfoQ中文站对你采访,简要介绍一下自己吧。

陈思儒:我目前是盛大计算机(上海)有限公司的一位高级研究员。在职业生涯中从事过分布式消息系统、分布式应用、多层框架设计、规则引擎开发框架研究,以及Java 2D MMORPG框架研究。

Fenng:说一下当初开发Amoeba项目的缘由,估计其中也会有不少小故事吧?我可是非常好奇。

陈思儒:其实Amoeba的前身是网络数据包分析代理。Amoeba之所以能够快速稳定发展,也是因为我个人在前期使用这些技术分析过一些游戏的数据包(这儿不方便透露一些细节,都只是个人爱好而已,并没有破坏那些被我研究过的游戏^_^)。

为什么会有Amoeba这个产品,这个话题的确非常有意思,我关注MySQL Proxy也有一段时间了。MySQL Proxy的这种想法做的非常棒,它能够根据自己的想法去构造目标的MySQL Proxy应用,比如监控SQL执行、数据流量、读写分离等。但由于有时我们使用MySQL Proxy并不能非常轻易地解决一些问题(如读写分离、数据切分、水平切分、负载均衡等),而是需要写大量的Lua脚本,这些Lua并不是现成的,而是需要自己去写。这个工作对于并不熟悉MySQL Proxy内置变量和MySQL Protocol的人来说是非常困难的。

因此,带着这个想法我就设想做一个非常容易使用、可移植性非常强的软件。Amoeba就因此诞生了。为什么叫Amoeba呢?其实这个想法我是突然想到的,Amoeba的中文意思是“变形虫”,Amoeba被设想为数据库代理的开发框架,它可以为符合Amoeba框架的任何数据库开发代理层。因此也比较象“变形虫”一样能够变成目标数据库的代理层软件。

Fenng:我观察到Amoeba与Oracle交互的时候似乎还是模拟MySQL的驱动器,实际情况是否如此?

陈思儒:目前Amoeba有2个产品:Amoeba for MySQL和Amoeba for Aladdin。这2个产品有不同的适用范围:

  • Amoeba for MySQL:被代理的只有MySQL数据库,需要分析MySQL网络协议,它的代价比Aladdin会小很多,而且性能也较高;
  • Amoeba for Aladdin:被代理的可以是目前提供JDBC驱动的所有数据库,这些数据库可以同时并存于Amoeba for Aladdin后端。

其实我在上一家公司工作的时候也正在研发Amoeba for Oracle,这个产品目前还处于研发状态。其产品性能也跟Amoeba for MySQL一样出色。

就Amoeba for Aladdin产品来说,后端的任何数据与Aladdin交互采用JDBC驱动。对于Aladdin说,数据库的协议是透明的,而应用跟Aladdin的交互则采用MySQL协议,这个做法很多人有不明白,其实做这个决定主要是想借助MySQL被使用的广泛程度以及对各种开发语言的支持。因此对前端的应用来说,Aladdin其实就是一个虚拟的MySQL数据库。你这个问题应该是问在使用Aladdin的时候。

Fenng:是的,这是我在看了你的Aladdin架构图后所产生的疑惑。你比我严谨多了(^_^)。能否冒昧问一下Amoeba项目当前的局限?

陈思儒:虽然Amoeba能够很好地解决水平切分、垂直切分等,但还是会存在一些局限性,产生这些局限性的原因是,我们在设计目标数据库架构的时候就必须考虑到未来数据库的框架(可以线性扩容的数据库架构)。因此它将不支持有些查询,比如跨数据库服务器进行Join,我们要尽量避免类似的业务出现,这类问题可以通过多次查询来解决。

Fenng:你在前面也说到了MySQL Proxy,能否简单地说说Amoeba与MySQL Proxy的区别?

陈思儒:其实说与MySQL Proxy的区别应该是Amoeba for MySQL与MySQL Proxy的区别,在上面表述的第二点应该都涉及到了。Amoeba只是目标数据库代理的开发框架,Amoeba for Aladdin是另外一个类似Amoeba for MySQL的产品。他们的共同点是都可以做负载均衡(HA、ROUNDROBIN,WEIGHTBASED)、读写分离、数据切分(垂直、水平)和failOver等。

Fenng:据说你也分析过Oracle的TNS协议,你认为可靠性如何?

陈思儒:的确,我在上一家公司为做Amoeba for Oracle分析过TNS协议,它的可靠性以及安全方面都没什么问题,Oracle还提供了一些网络层的性能参数,用来改变Oracle的网络吞吐量。但是Oracle的数据部封包做法让我和老同事在分析Oracle数据包的时候伤透脑筋, 我觉得Oracle如果想在协议上面升级版本将不是一件容易的事情。而MySQL的协议封包的做法我比较赞同。

Fenng:对于分析TNS的可行性,我的看法倒是和你类似。顺便问一下,现在Amoeba是否已经有了成功案例, 方便的话能否举几个?

陈思儒:Amoeba for MySQL成功案例,目前就网友直接跟我说的有几个,但我还没具体了解他们公司的具体名称,以后知道了我再透露。

Fenng:到时候千万要通知我一下。对了,能否说一下Amoeba 项目的愿景以及下一步的目标?

陈思儒:目前距离Amoeba的发展目标还有一点距离,Amoeba未来将会更加容易使用、可管理、可动态装载配置、Amoeba集群等。

如果可行的话,未来我将补充MySQL协议,做一个用于负载均衡的“重定向路由器”(类似F5功能,但它只是做连接跳转)。

Fenng:在开发者主要是你一个人? 是否还有其他维护者 ?

陈思儒:Amoeba 框架、Amoeba for MySQL、Amoeba for Aladdin等产品目前的开发就我一个人。

Fenng:很高兴你接受我的采访。期待Amoeba项目取得更大的成就,也祝你工作愉快!

陈思儒:客气!也希望有更多的开源爱好者或是数据库技术爱好者加入到这个项目的开发中来。关于Amoeba项目的进展我会在“Amoeba 开发者博客”上更新: http://amoeba.meidusa.com,欢迎订阅。

作者简介:冯大辉,就职于阿里巴巴集团旗下支付宝(中国)网络科技有限公司(Alipay.com),担任数据库架构师,负责支付宝数据库架构规划、解决方案等相关工作。2007年国内首批Oracle ACE,网上 ID 为“Fenng”,业余时间关注Web 2.0网站架构技术。个人Blog:http://www.dbanotes.net


志愿参与InfoQ中文站内容建设,请邮件至editors@cn.infoq.com。也欢迎大家到InfoQ中文站用户讨论组参与我们的线上讨论。

开发者资讯 | 我们致力于为开发者提供动力! 发表人 jacken chen 发表于
  1. 返回顶部

    开发者资讯 | 我们致力于为开发者提供动力!

    发表人 jacken chen

    开发者资讯 | 我们致力于为开发者提供动力!
    网站开发,软件编程,数据库,开发工具,动画设计,it资讯
    www.jacken.com.cn

深度内容

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。