位置:首页 » 技术 » amoeba源码分析(2)-amoeba模块以及源码结构分析

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

日期:2015-08-02 阅读:0num
Advertisement

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内部模块,见参考引用链接

amoeba源码分析(2)-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。每个实现内子工程均需要实现自有的消息处理。下面给出参考应用文档中给出的实例化图:

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

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

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

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

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

相关文章
  • amoeba源码分析(2)-amoeba模块以及源码结构分析 amoeba源码分析(2)-amoeba模块以及源码结构分析

    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-getew

  • Android4.4.2源码分析之WiFi模块(2) Android4.4.2源码分析之WiFi模块(2)

    Android4.4.2源码分析之WiFi模块(二) 接着上一篇继续对WiFi源码的分析 Android4.4.2源码分析之WiFi模块(一) onResume方法中 6>,首先是调用WiFiEnabler的resume方法对switch进行管理 接下来注册广播 getActivity().registerReceiver(mReceiver, mFilter); 广播监听的action如下 //wifi状态改变的action mFilter.addAction(WifiManager.WIFI

  • [原创] jQuery源码分析-03结构jQuery对象-源码结构和核心函数 [原创] jQuery源码分析-03结构jQuery对象-源码结构和核心函数

    [原创] jQuery源码分析-03构造jQuery对象-源码结构和核心函数 作者:nuysoft/高云 QQ:47214707 EMail:[email protected] 毕竟是边读边写,不对的地方请告诉我,多多交流共同进步.本章还未写完,完了会提交PDF. 前记: 想系统的好好写写,但是会先从感兴趣的部分开始. 近期有读者把PDF传到了百度文库上,首先感谢转载和传播,但是据为已有并设置了挺高的财富值才能下载就不好了,以后我整理好了会传到文库上.请体谅一下. 3. 构造jQuery对象 3

  • Elasticsearch源码分析之二-目录过程源码概要分析

    Elasticsearch源码分析之二------索引过程源码概要分析 Elasticsearch源码分析之二------索引过程源码概要分析 索引逻辑简单分析,这里只是理清主要的脉络,一些细节方面以后的文章或会阐述. 假如通过java api来调用es的索引接口,先是构造成一个json串(es里表示为XContent,是对要处理的内容进行抽象),在IndexRequest里面指定要索引文档到那个索引库(index).其类型(type)还有文档的id,如果没有指定文档的id,es会通过UUID工

  • Hive源码分析(二) Eclipse调试Hive源码报does not have a scheme异常解决

    Hive源码分析(二) Eclipse调试Hive源码报does not have a scheme错误解决 本博客属原创文章,转载请注明出处:http://guoyunsky.iteye.com/blog/1177909 欢迎加入Hadoop超级群: 180941958 终于可以调试Hive源码了.首当其冲的就报了这个错误: FAILED: Error in metadata: java.lang.IllegalArgumentException: URI: does not have a s

  • Android4.4.2源码分析之WiFi模块(一) Android4.4.2源码分析之WiFi模块(一)

    已经写了几篇关于Android源码的,源码代码量太大,所以如果想分析某个模块可能不知如何下手,说一下思路 1,分析源码英文阅读能力要够,想要分析某个模块一般找模块对应的英文,就是模块 2,找到之后首先查看清单配置文件Androidmani.fest,找到程序主界面activity 3,通过查看配置文件中的权限可以知道应用都有什么用 大致通过以上三步就可以进入源码进行分析 针对WiFi,我们通过清单文件可以知道,需要以下几个权限,其含义如下注释 <!-- 允许程序获取WiFi状态 --> <

  • libevent源码分析---时间管理模块

    一.在event_base_loop()函数中有和时间相关的部分: 其中tv_cache用来记录时间缓存的,base->tv_cache.tv_sec = 0; 在这里讲时间缓冲清空,在while()循环中,首先校正时间(timeout_correct(base,&tv);),这个校正是存在目的的,接下来再介绍,时间校正结束再在最小堆中找最小时间,使用的函数为timeout_next,这个时间作为循环的最长事件,这里多的判断就是,如果还用活动事件,事件直接清空,不等待,直接处理这个事件. 接

  • jQuery源码分析-03构造jQuery对象-源码结构和核心函数

    作者:nuysoft/高云 QQ:47214707 EMail:[email protected] 毕竟是边读边写,不对的地方请告诉我,多多交流共同进步.本章还未写完,完了会提交PDF. 前记: 想系统的好好写写,但是会先从感兴趣的部分开始. 近期有读者把PDF传到了百度文库上,首先感谢转载和传播,但是据为已有并设置了挺高的财富值才能下载就不好了,以后我整理好了会传到文库上.请体谅一下. 3. 构造jQuery对象 3.1 源码结构 先看看总体结构,再做分解: . 代码如下: (function

  • Docker源码分析(三):Docker Daemon启动 Docker源码分析(三):Docker Daemon启动

    1 前言 Docker诞生以来,便引领了轻量级虚拟化容器领域的技术热潮.在这一潮流下,Google.IBM.Redhat等业界翘楚纷纷加入Docker阵营.虽然目前Docker仍然主要基于Linux平台,但是Microsoft却多次宣布对Docker的支持,从先前宣布的Azure支持Docker与Kubernetes,到如今宣布的下一代Windows Server原生态支持Docker.Microsoft的这一系列举措多少喻示着向Linux世界的妥协,当然这也不得不让世人对Docker的巨大影响

  • Docker源码分析(3):Docker Daemon启动 Docker源码分析(3):Docker Daemon启动

    Docker源码分析(三):Docker Daemon启动 Docker Daemon是Docker架构中运行在后台的守护进程,大致可以分为Docker Server.Engine和Job三部分.Docker Daemon可以认为是通过Docker Server模块接受Docker Client的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行,运行过程的作用有以下几种可能:向Docker Registry获取镜像,通过graphdriver执行容器镜像的本地化操作,

  • Cache类的源码分析

    Cache类的源码分析 一个Cache类的源码分析,学习Cache的人可以参考下 /* 用户需要事先定义的常量: _CachePath_ 模板缓存路径 _CacheEnable_ 自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制 _ReCacheTime_ 自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存 _ActionVar_ Action的GET变量 Sample: $cache=new cache(); if ($cache->check()) { $templa

  • 文章: Docker源码分析(二):Docker Client创建与命令执行 文章: Docker源码分析(二):Docker Client创建与命令执行

    [编者按]在<深入浅出Docker>系列文章的基础上,InfoQ推出了<Docker源码分析>系列文章.<深入浅出Docker>系列文章更多的是从使用角度出发,帮助读者了解Docker的来龙去脉,而<Docker源码分析>系列文章通过分析解读Docker源码,来让读者了解Docker的内部实现,以更好的使用Docker.总之,我们的目标是促进Docker在国内的发展以及传播.另外,欢迎加入InfoQ Docker技术交流群,QQ群号:365601355. 1

  • jQuery中deferred对象详解及源码分析

    本文主要讲的内容是jQuery的deferred对象使用详解,后面补充了一篇jQuery Deferred对象详细源码分析. jQuery的deferred对象使用详解 jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本.每个版本都会引入一些新功能.今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能--deferred对象.这个功能很重要,未来将成为jQuery的核心方法,它彻底改变了如何在jQuery中使用ajax.为了实现它,jQuery的全部ajax代

  • LUA源码分析6:环境设置

    LUA源码分析六:环境设置 LUA源码分析五:环境设置 版本日期 2011年4月22日 lua里的环境设置,可以看成是一个临时的域名空间.这个空间里有名字和变量等等.可以试着运行一下以下代码,输出全局的环境 local l_lindp=1 g_lindp=1 for n in pairs(_G) do print(n) end 输出: string xpcall package tostring print os unpack require getfenv setmetatable next

  • N地图源码分析(基本框架)

    Nmap源码分析(基本框架) 源:http://blog.csdn.net/AspirationFlow/article/details/7797708#comments 评:

  • [原创] jQuery源码分析-十事件处理-Event-事件绑定与删除-bind/unbind+live/die+delegat/undelegate

    [原创] jQuery源码分析-10事件处理-Event-事件绑定与删除-bind/unbind+live/die+delegat/undelegate 作者:nuysoft/高云 QQ:47214707 EMail:[email protected] 声明:本文为原创文章,如需转载,请注明来源并保留原文链接. 后文预告:封装事件对象 便捷接口解析 ready专题 10.4 .bind() .one() 10.4.1 如何使用 .bind( eventType, [eventData], han

  • [原创] jQuery源码分析-00题词开光 [原创] jQuery源码分析-00题词开光

    [原创] jQuery源码分析-00前言开光 jQuery源码分析 - 前言 jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发开发人员遍历HTML文档.操作DOM.处理事件.执行动画和开发Ajax的操作.其独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式.---摘自<锋利的jQuery> 通过分析jQuery的源码,我们能(这也是本文的写作目的): l 学习先进的设计理念 l 学习各种实现技巧 l 巩固JavaScript基础 l

  • Android应用层View作图流程与源码分析 Android应用层View作图流程与源码分析

    Android应用层View绘制流程与源码分析 [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果] 1 背景 还记得前面<Android应用setContentView与LayoutInflater加载解析机制源码分析>这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系: 看见没有,如上图中id为content的内容就是整个View树的结构,所以对每个具体View对象的操作,其实就是个递

  • (转载)FFMPEG源码分析(2) (转载)FFMPEG源码分析(2)

    (转载)FFMPEG源码分析(二) ffmpeg源码分析之数据流 本文主要介绍ffmpeg的数据流,在ffmpeg中主要分有三个主要用途用于媒体流的解码播放,媒体流的转换(解码之后再编码)和媒体流录制. 媒体流的解码播放 在ffmpeg中媒体流的解码播放流程如下图: 其主要流程为从媒体文件中读取出媒体流,然后送入媒体格式解码器(demuxer)中去除多余的外衣--媒体格式.然后送入ffmpeg的codec的decode中进行解码,最终生成显示需要的YUV格式的图片,然后再送入类似SDL中进行渲染

  • STL源码分析-Traits技术 STL源码分析-Traits技术

    STL源码分析----Traits技术 在 STL 源码中,到处可见 Traits 的身影,其实 Traits 不是一种语法,更确切地说是一种技术. STL库中,有一个函数叫做 advance, 用来将某个迭代器(具有指针行为的一种 class)移动 某个给定的距离.声明如下: template <typename IterT, typename DistT> // 将迭代器向前移动 d 单位 void advance(IterT& iter, DistT d); // 如果 d &l

最新文章
  • 新版本的 chrome( 42)在哪里禁用 dns 缓存?

    记得好久以前的版本的设置里,好像有一个checkbox,好象是叫通过dns缓存来提升网络速度还是啥的,新版本没有了--还有办法禁用吗? 主要是我单位的网和家里的网一个是电信(而且还有特别讨厌的智能VPN,香港线路的),一个是长城宽带,如果它瞎给我缓存,我某些网站加载会特别慢(比如新浪).在单位的时候我用本机的pdnsd,在家的时候用旧安卓机上跑的pdnsd,用不到浏览器的缓存. --cut-- leozhang在2015-05-08 17:59:1回答到: 高级设置: Predict netwo

  • 4种蔬菜应该带皮吃 4种蔬菜应该带皮吃

    本站阅读配图 由于很多人担心蔬菜上有残留的农药或细菌,就习惯把蔬菜去皮后再吃.其实,有4种蔬菜带皮吃才是最营养的哦. 4种蔬菜应带皮吃 一.冬瓜皮利水消肿 冬瓜皮不光含有多种维生素和矿物质,还含多种挥发性营养成分.它能利水消肿,对糖尿病人更有好处.因此做冬瓜汤时最好带皮煮. 二.黄瓜皮能排毒 黄瓜皮中含较多的苦味素,是黄瓜的营养精华所在.食用带皮黄瓜不仅可使维C充分吸收,而且能帮助人体有效排毒.此外,黄瓜皮还有抗菌消炎的作用.将西瓜皮.黄瓜皮.冬瓜皮烫熟后凉拌的"鲜拌三皮"最适合减肥者

  • 什么样男人会陪女人慢慢变老 什么样男人会陪女人慢慢变老

    拥有了这些"优点",一定是一个对感情有着高度责任感的男人,他能够给女人带来"安全感",给予女人一生的幸福. 1.胸襟开阔,宽容忍让. 这样的男人不计前嫌,得理饶人,宽宏大量,特别是对自己的女人更能理解体谅,将会使许多矛盾化干戈为玉帛.当然,这种男人表里一致,绝不是表面一副大度风范,私下却是小肚鸡肠,那样必然会走入另一个极端.两人发生争执,通常是他最先让步.他会耐心听你说话,如果你是对的,他能够承认错误;即使你不对,他也愿意原谅你. 有话可以好好讲,不会动不动就拉下脸

  • 在Windows 2003中配置ASP.Net环境 在Windows 2003中配置ASP.Net环境

    大家知道,Microsoft为了更好地预防恶意用户和攻击者的攻击,在默认情况下,没有将 IIS6.0 安装到 Windows Server 2003 家族的成员上.而且,当我们最初安装 IIS6.0 时,该服务在高度安全和"锁定"模式下安装.在默认情况下,IIS6.0 只为静态内容提供服务即,诸如 ASP.ASP.NET.在服务器端的包含文件.WebDAV 发布和 FrontPage Server Extensions 功能只有在启用时才工作.在windows 2003 IIS 6.0

  • 滴滴快的情人节宣布在一起 或涉垄断难过审查 滴滴快的情人节宣布在一起 或涉垄断难过审查

    在2015年的情人节,滴滴打车和快的打车终于宣布"在一起"了. 今天,滴滴打车与快的打车宣布两家公司战略合并,合并后的新公司将实现Co-CEO制度,滴滴打车CEO程维与快的打车CEO吕传伟共同担任联合CEO.两家公司在人员架构上保持不变,业务继续平行发展,并将保留各自的品牌和业务独立性.不过双方均未透露持股比例和新公司估值.双方合并之后,可以结束在补贴上的恶性竞争,提高对出租车.乘客尤其是私家车主的补贴议价能力. 据悉,其实快的.滴滴两家公司"此前其实谈过了很多次"

  • 论国内网页游戏(WebGame)的“死掉”

    几乎是从2007年底开始,网页游戏就如雨后春笋般崛起在各大平台最显眼的广告位置,网页游戏市场的火爆,以及媒体的商业化炒作.从最开始的通过Flash游戏制作手段的Flash小游戏到现在的应用各种技术的网页游戏.一时之间,VC(风险投资)的组团进入,国内网游巨头的高调介入等等媒体报道,网页游戏似乎成了互联网最赚钱的项目. 但是由于网页游戏缺乏沉淀,缺乏核心竞争力,缺乏良好的运营基础,联合运营又成了网页游戏的最热门模式. 一时之间,是个站长都会去放置这样的代码,是个网站的广告处都会出现网页游戏的广告.

  • 十二星座把什么放在第一位? 十二星座把什么放在第一位?

    白羊座:工作 受火星的影响,白羊座的人都有一种勇于冒险.不吝啬及领导的能力,特别是表现在工作方面,这是白羊座最大的魅力.白羊座的人天生具有很好的突击精神和精 力,再加上积极努力的魄力,当灵感一闪,脑中立刻产生了构想及做法时,就会马上采取行动,做任何事都喜欢跑第一,立在最前端,充分的发挥领导的能力.在他 们心里,喜欢的事,最心爱的人,都不能动摇他们对于工作的冲劲.白羊就是一个典型的工作狂,所以,跟他们在一起前要慎重的考虑哦. 金牛座:金钱 金牛座对于金钱的热衷,其实源自于他们的没有安全感,他们认为

  • 绿麻雀网贷系统:P2P网贷同质化 如何规避流动性风险 绿麻雀网贷系统:P2P网贷同质化 如何规避流动性风险

    p2p行业作为互联网金融的主力军,近两年突飞猛进的发展速度,惊呆了无数投资界人士.据统计数据显示,去年10月以后,问题平台出现的速度不断加快.去年全年出现问题平台共76家,而截至11月1日,今年的问题平台已达143家.其中,诈骗类的有82家,占比57.34%.而今年截止至10月,新上线的P2P平台总共也就71家.目前,全国正在运营的网贷平台共计约1474家. 在飞速发展的同时也引来无数的风暴,跑路门.诈骗门等消息不断涌现.一边上演的是平台的跑路大戏,一边该行业却招蜂引蝶,引来各路资本涌入平台.

  • asp.net采集网页图片的具体方法

    在网上找了下大多都是通过字符串操作找出img标签,这种方式操作起来比较麻烦,而且代码看起来比较累.这里我用的方法是通过WebBrowser来加载一个页面,然后HTMLDocument类来操作省去了字符串操作的步骤,直接调用GetElementsByTagName把所有图片地址返回到一个HtmlElementCollection对象里. 代码如下: . 代码如下: using System; using System.Collections.Generic; using System.Linq;

  • 焦点移动的有关问题

    焦点移动的问题. 假设一个窗口里有很多控件(其中有container,container中也有控件),让一个控件获得焦点是不是只能通过IWidget_MoveFocus(pRoot,pWidget)实现呢?如果一个控件拿不到根容器的指针,它能不能获得焦点? ------解决方案-------------------- 我们可以利用基于BUIW图形库的 UI框架,使用其中的一些中间件 获取根容器的焦点.具体的有,先通过GetFocusIndex 函数获取根容器的焦点索引 ,再根据索引获得整个容器的

热门推荐
  • 话说 ARIN 给我分了一段局域网 IP 怎么破 话说 ARIN 给我分了一段局域网 IP 怎么破 如题,如图 --cut-- tifan在2016-05-09 07:23:37回答到: Then you're in deep shit. jasontse在2016-05-09 07:23:37回答到: 睡醒了吗,局域网是 192.168.0.0/16 vibbow在2016-05-09 07:23:37回答到: 我就不吐槽那个 screenshot 我一分钟都没加载出来 aheadlead在2016-05-09 07:23:37回答到: @vibbow 我一分钟都没加载出来 Ansonyi在
  • 美图手机m4怎么截屏? 美图手机m4怎么截屏? 在需要截屏的界面同时按住[音量下键]和[电源键],听到咔嚓声证明截屏成功,如图: 如果没有成功的话需要多尝试几次,两个按键需要同时按下,如果不行的话也可以在通知栏里使用系统自带的截屏方法.美图m4截屏就是如此简单,相信两种方法都能够满足你,截屏文件会在系统自带的相册里看到,需要拷贝到电脑上的朋友可以查看详细信息
  • 富士S1支持遥控功能吗 富士S1支持遥控功能吗 富士S1支持遥控功能,通过智能移动设备.
  • 直通乌镇:互联网大会9大热词 直通乌镇:互联网大会9大热词 明天,第二届世界互联网大会将在永久举办地浙江乌镇拉开帷幕,中共中央总书记.国家主席习近平将亲临现场并发表主旨演讲.如今,互联网已经深度介入人们的日常生活,在过去的一年中体现得尤其明显.一提网络,它不光是刷朋友圈.网购商品,还包括因为移动互联网而迎来大发展的分享经济以及数据经济等等.2015年互联网世界的关键热词就在我们的身边,预计这些也将是本次互联网大会嘉宾讨论的热点. 一."互联网+" "互联网+"应该是2015年最热的一个关键词.在今年的政府工作报告中,李克强总
  • java实现图片上加文字水印(SpringMVC + Jsp) java实现图片上加文字水印(SpringMVC + Jsp) 这篇文章主要为大家详细介绍了java实现在图片上加文字水印的方法,水印可以是图片或者文字,操作方便,感兴趣的小伙伴们可以参考一下 看之前要先对SpringMVC进行了解打好基础,下面直接先看效果图 代码编写 1.导入相关架包 2.配置文件 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-i