Amoeba小组说明文档
本组成员:刘灿彬(组长),易莘秦,莫家峻
1,Amoeba概述
Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。
Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的Replication 等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS的思想。
Amoeba(变形虫)项目,该开源框架于2008年开始发布一款Amoeba for Mysql 软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与Client、DB Server(s)之间,对客户端透明。具有负
载均衡、高可用性、SQL过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多企业的生产线上面使用。
随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上。这时集中式数据库系统表现出它的不足:集中式处理,势必造成性能瓶颈;应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性不高;集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差。在这种形势下,集中式数据库将向分布式数据库发展。而Amoeba的透明、简易配置及多个优点使其成为分布式数据库代理产品中的优秀选择。
优势
Amoeba主要解决以下问题:
a).数据切分后复杂数据源整合
b).提供数据切分规则并降低数据切分规则给数据库带来的影响
c).降低数据库与客户端连接
mysql配置与安装过程
d).读写分离路由
f).支持分库,分表,事务不足
a)、目前还不支持事务b)、暂时不支持存储过程(近期会支持)
c)、不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比
如一次请求返回10w以上甚至更多数据的场合)
d)、暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致:
Amoeba:阿米巴原虫
2,MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。
MySQL 软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP 和Apache可组成良好的开发环境。
MySQL简介
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
背景
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。
MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila 来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。2008年1月16号MySQL AB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。
应用环境
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小
型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP/Perl/Python)和LNMP (Linux+Nginx+MySQL+php/perl/Python),即使用Linux作为操作系统,Apache 和Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统。
系统特性
1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统
3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
4.支持多线程,充分利用CPU资源
5.优化的SQL查询算法,有效地提高查询速度
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
7.提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
8.提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
9.提供用于管理、检查、优化数据库操作的管理工具。
10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
11.支持多种存储引擎。
3.Centos
CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。
简介
CentOS6.4放出下载[1]。上个版本是2012-07-09的6.3.Redhat Enterprise Linux RHEL6.4是2013-02-21发布的。速度已经很快。上游RHEL6.4主要改进:支持Parallel NFS(pNFS),增强了Vmware和Hyper-V的虚拟机支持及性能,安全增强了身份管理,支持cgroups(及PMU),更多的新工具等。
CentOS是一个基于Red Hat Linux提供的可自由使用源代码的企业级Linux 发行版本。每个版本的Cent
OS都会获得十年的支持(通过安全更新方式)。新版本的CentOS大约每两年发行一次,而每个版本的CentOS会定期(大概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、
高预测性、高重复性的Linux环境。[2]CentOS是Community Enterprise Operating System的缩写。
CentOS是RHEL(Red Hat Enterprise Linux)源代码再编译的产物,而且在RHEL的基础上修正了不少已知的Bug,相对于其他Linux发行版,其稳定性值得信赖。RHEL在发行的时候,有两种方式。一种是二进制的发行方式,另外一种是源代码的发行方式。无论是哪一种发行方式,你都可以免费获得(例如从网上下载),并再次发布。但如果你使用了他们的在线升级(包括补丁)或咨询服务,就必须要付费。[3]CentOS中文论坛聚集了许许多多CentOS系统工作和学习者,是国内一个专门讨论CentOS技术的论坛。
特点
1.可以把CentOS理解为Red Hat AS系列!它完全就是对Red Hat AS进行改进后发布的!各种操作、使用和RED HAT没有区别!
2.CentOS完全免费,不存在RED HAT AS4需要序列号的问题。3.CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RED HAT 那样需要花钱购买支持服务!
4.CentOS修正了许多RED HAT AS的BUG!
5.CentOS版本说明:CentOS3.1等同于RED HAT AS3Update1CentOS3.4等同于RED HAT AS3Update4
4.CentOS4.0等同于RED HAT AS4与RHEL的关系
RHEL在发行的时候,有两种方式。一种是二进制的发行方式,另外一种是源代码的发行方式。无论是哪一种发行方式,你都可以免费获得(例如从网上下载),并再次发布。但如果你使用了他们的在线升级(包括补丁)或咨询服务,就必须要付费。RHEL一直都提供源代码的发行方式,CentOS就是将RHEL发行的源代码重新编译一次,形成一个可使用的二进制版本。由于LINUX的源代码是GNU,所以从获得RHEL的源代码到编译成新的二进制,都是合法。只是REDHAT是商标,所以必须在新的发行版里将REDHAT的商标去掉。REDHAT对这种发行版的态度是:"我们其实并不反对这种发行版,真正向我们付费的用户,他们重视的并不是系统本身,而是我们所提供的商业服务。"所以,CentOS可以得到RHEL的所有功能,甚至是更好的软件。但CentOS并不向用户提供商业支持,当然也不负上任何商业责任。如果你要将你的RHEL转到CentOS上,因为你不希望为RHEL升级而付费。当然,你必须有丰富linux使用经验,因此RHEL的商业技术支持对你来说并不重要。但如果你是单纯的业务型企业,那么还是建议你选购RHEL软件并购买相应服务。这样可以节省你的IT管理费用,并可得到专业服务。一句话,选用CentOS还是RHEL,取决于你所在公司是否拥有相应的技术力量。
结构
CentOS,也叫做社区企业操作系统,是企业Linux发行版领头羊Red Hat Enterprise Linux(以下称之为RHEL)的再编译版本。RHEL是很多企业采用的Linux发行版本,但是如果想得到RedHat的服务与技术支持,用户必须向Red Hat 付费才可以。CentOS的开发者们使用Red Hat Linux的源代码创造了一个和
RHEL近乎相同的Linux。但是一切和RedHat有关的商标都被去除了,因为RedHat不允许他们这样做。CentOS是免费的,你可以使用它像使用RHEL一样去构筑企业级的Linux系统环境,但不需要向RedHat付任何的费用。目前,CentOS的技术支持主要通过社区的官方邮件列表、论坛和聊天室来提供。
5.JDK
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。
简介
SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK5.0开始,改名为Java SE。
EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。
ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK5.0开始,改名为Java ME。
没有JDK的话,无法编译Java程序,如果想只运行Java程序,要确保已安装相应的JRE。
以下是各版本的名称及发布日期:
版本名称发行日期
JDK1.1.4Sparkler(宝石)1997-09-12
JDK1.1.5Pumpkin(南瓜)1997-12-13
JDK1.1.6Abigail(阿比盖尔–女子名)1998-04-24
JDK1.1.7Brutus(布鲁图–古罗马政治家和将军)1998-09-28
JDK1.1.8Chelsea(切尔西–城市名)1999-04-08
J2SE1.2Playground(运动场)1998-12-04
J2SE1.2.1none(无)1999-03-30
J2SE1.2.2Cricket(蟋蟀)1999-07-08
J2SE1.3Kestrel(美洲红隼)2000-05-08
J2SE1.3.1Ladybird(瓢虫)2001-05-17
J2SE1.4.0Merlin(灰背隼)2002-02-13
J2SE1.4.1grasshopper(蚱蜢)2002-09-16
J2SE1.4.2Mantis(螳螂)2003-06-26 Java SE5.0(1.5.0)Tiger(老虎)2004-09-30 Java SE6.0(1.6.0)Mustang(野马)2006-04
Java SE7.0(1.7.0)Dolphin(海豚)2011-07-28

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。