MyException - 我的异常网
当前位置:我的异常网» 数据库 » amoeba源码分析(2)-amoeba模块以及源码结构分析

amoeba源码分析(2)-amoeba模块以及源码结构分析

www.myexceptions.net  网友分享于:2015-08-26  浏览:22次
amoeba源码分析(二)-amoeba模块以及源码结构分析

本系列以Amoeba 997版本分支源码(目前最新版本分支)作为分析源,amoeba源码SVN地址:http://amoeba.googlecode.com/svn/trunk。在分析源码前,需要将源码导入到Eclipse工程里面。amoeba共分为amoeba、amoeba-mysql、amoeba-memcached、amoeba-aladdin、amoeba-mongodb、amoeba-manager、amoeba-geteway七个子工程。本系列主要分析amoeba、amoeba-mysql源码,其他子工程会根据需要分析说明

上一篇文章了解了amoeba的入口,这一篇对amoeba各个模块进行一个系统分析。主要参考http://wenku.baidu.com/view/4669680fcc175527072208a5.html

1 amoeba内部模块,见参考引用链接

Built on Java NIO: 无阻塞、可支撑上万个连接
线程池支撑:网络IO与内部逻辑执行线程分离,充分利用多核多CPU资源
Heartbeat Manager:负责远程服务的心跳检测
RULE:支持强大的规则表达式,支持规则函数扩展,对DBA友好
Object Pool: 它负责管理服务连接池(可以设置的参数:初始化数量、最大连接数、最大空闲连接数以及最小连接数、连接池收缩周期)

从以上内部模块图和描述可以了解amoeba的基本模块功能,接下来我们从源码包来细分内部各个主要功能模块:

1)配置模块,用于加载并处理各个配置项模块。存在于com.meidusa.amoeba.config。

2)心跳模块,各个远程服务的心跳检测模块,定期调用每个连接池 doCheck(),检测其有效性。存在于com.meidusa.amoeba.heartbeat。

3)数据库连接模块,通过JDBC连接各个数据库的模块。存在于com.meidusa.amoeba.jdbc。

4)监控模块,提供监控服务功能的模块。存在于com.meidusa.amoeba.monitor及其子包下。

5)网络通信模块,包含各个服务器连接、认证、数据处理等功能模块。存在于com.meidusa.amoeba.net及其子包下。

6)数据库解析模块,包括sql语句,statement以及表格等解析处理功能。存在于com.meidusa.amoeba.parser及其子包下。

7)路由规则模块,用于处理数据库请求路由规则功能模块。存在于com.meidusa.amoeba.route

其他包不在此处列举。

2 amoeba消息处理,指amoeba接收到mesage后的处理逻辑功能。amoeba子工程提供MessageHander接口,供各个子工程实现,amoeba子工程仅实现了认证处理handler。每个实现内子工程均需要实现自有的消息处理。下面给出参考应用文档中给出的实例化图:

 

本文主要关注mysql的实现方式,可以看到amoeba-mysql子工程中的消息处理分为三步:SQL语句分析,SQL请求路由,合并返回结果。amoeba-mysql子工程的MessageHandler存在于com.meidusa.amoeba.mysql.handler下。

后面文章会通过源码将三步一一说明。

3 amoeba处理流程,来自参考文件

 

 

 

文章评论

我是如何打败拖延症的
我是如何打败拖延症的
程序员应该关注的一些事儿
程序员应该关注的一些事儿
编程语言是女人
编程语言是女人
10个调试和排错的小建议
10个调试和排错的小建议
每天工作4小时的程序员
每天工作4小时的程序员
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员必看的十大电影
程序员必看的十大电影
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员都该阅读的书
程序员都该阅读的书
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
鲜为人知的编程真相
鲜为人知的编程真相
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
老程序员的下场
老程序员的下场
那些争议最大的编程观点
那些争议最大的编程观点
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
漫画:程序员的工作
漫画:程序员的工作
程序员的鄙视链
程序员的鄙视链
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
一个程序员的时间管理
一个程序员的时间管理
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
旅行,写作,编程
旅行,写作,编程
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员和编码员之间的区别
程序员和编码员之间的区别
为什么程序员都是夜猫子
为什么程序员都是夜猫子
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
 程序员的样子
程序员的样子
Java程序员必看电影
Java程序员必看电影
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
我的丈夫是个程序员
我的丈夫是个程序员
如何成为一名黑客
如何成为一名黑客
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有