写点什么

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

2008 年 11 月 28 日

估计使用 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 中文站用户讨论组参与我们的线上讨论。

2008 年 11 月 28 日 00:028427

评论

发布
暂无评论
发现更多内容

程序员陪娃系列——见你的第一面

孙苏勇

程序员人生 陪伴 随笔杂谈

多角度分析,通讯时序数据的预测与异常检测挑战

华为云开发者社区

时序数据库 即时通讯 异常检测 网络智能体 时序预测

超英文邮件50%!Flink 中文邮件列表必须有姓名

Apache Flink

flink

Linkerd 2.8 - 實現超級簡單又安全的多叢集(multicluster) Kubernetes 架構

Rammus

Kubernetes DevOps 运维 云原生 Service Mesh

程序员陪娃系列——和孩子聊生死

孙苏勇

程序员人生 陪伴 随笔杂谈

程序员陪娃系列——小小免费按摩师

孙苏勇

程序员人生 陪伴 随笔杂谈

低代码平台会让程序员失业?测评了5个工具,谁能让效率提高N倍?

代码制造者

编程 编程语言 低代码 零代码 测评

入职两周,怀疑自己进了假百度!跟传说中完全不一样!难道真有两家百度公司?

程序员生活志

百度 程序员生活

程序员陪娃系列——小娃的到来

孙苏勇

程序员人生 陪伴 随笔杂谈

构造、析构期间被调虚函数发生的惨案,长教训!

华为云开发者社区

代码 组合模式 封装、继承、多态 bug 回调函数

LeetCode题解:21. 合并两个有序链表,递归,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

联盟链落地与激励机制

CECBC区块链专委会

一款基于 Python 语言的 Linux 资源监视器!

JackTian

Python GitHub Linux bashtop bpytop

趣文:那天我被拉入 C++ 亲友群

程序员生活志

c c++ 程序员趣事

使用 supervisor 配置 ngrok 内网穿透为守护进程

jerry.mei

Linux 操作系统 ngrok 守护进程 内网穿透

内存总是不够?HBase&GeoMesa配置优化了解一下

华为云开发者社区

内存模型 内存 HBase 大集群 GeoMesa

太赞了!程序员应该访问的最佳网站都在这里了!

JackTian

GitHub 学习 编程 程序员 网站平台

学生党学编程,有这个开源项目就够了!

JackTian

GitHub 学习 编程 程序员 学生党

程序员陪娃系列——育儿路上二三事

孙苏勇

程序员人生 陪伴 随笔杂谈

移卡荣登2020「AI 最佳成长榜」,AI+金融科技赋能商业服务

DT极客

煌煌中原 化鲲为鹏

脑极体

云图说 | 3分钟创建一个游戏类工作负载

华为云开发者社区

Docker 容器 华为云 工作负载 2048游戏

“云”上教与学,让教育不止步于课堂

Geek_116789

【漫画】最近,老王又双叒get了CDN的新技能—可编程化敏捷开发

巨侠说

CDN

F5G的星光闪烁,为工业而明,向未来而歌

脑极体

MySQL“被动”性能优化汇总!

王磊

MySQL

主权投资基金或有助于实现可持续发展目标

CECBC区块链专委会

Android 原生 SQLite 数据库的一次封装实践

vivo互联网技术

sqlite android 数据库

数据库外键

will

数据库 性能 外键

程序员陪娃系列——育儿路上二三事续

孙苏勇

程序员人生 陪伴 随笔杂谈

BIGO技术:实时计算平台建设

InfoQ_3597a20b53cc

互联网 BIGO

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

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