amoebaAmoeba分布式数据库Proxy解决方案_第1页
amoebaAmoeba分布式数据库Proxy解决方案_第2页
amoebaAmoeba分布式数据库Proxy解决方案_第3页
amoebaAmoeba分布式数据库Proxy解决方案_第4页
amoebaAmoeba分布式数据库Proxy解决方案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

地址:开发者博客:已经普遍建立于计算机网络之上。这时集中式数据库系统表现出它的不足:集中式处理,势必造户在自己的本地录用、查询、等操作,实行局部控制,降低通信代价,避免集中式需要更高要求3变等缺点,升级的代价常常是昂贵和不可行的。Amoeba在分布式数据库领域将致力解决数据切分,应付客户端“集中式”处理分布式数据。这儿集中式是一个相对概念,客户端不需要知道某种数据的物理地。避免这种逻辑出现在业务端,Amoeba以下提供了您在开发、使用、安装Amoeba时,可能需要的信息AmoebaAmoebaForAmoebaAmoeba(变形虫)项目,专注分布式数据库开发。座落与、DBServer(s)之间。对客户AmoebaBuiltonJavaReusableServer给所有连接到Amoeba的客户端AmoebaDBA提供一种非常友好的类似SQL语法的数据切分规则同时客户端不用担心过多的DataBaseServer会给应用带来的配置。(轮询、当前活动连接数量AmoebaDataDataConnectionwholinked1:Auth2:Auth3:Send4:Handle5:Parser6:Gettarget7:AuthReques8:Auth9:routeQueryMessagetotarget10:send11:receive12:ReceiveRes13:MergeRes14:Dispatch15:ResponseAmoebaForAmoebaForMysqlAmoebaAmoebaForMysql您必须确保您已符合所有否否空是空否空否否否需要至少配置一个ConnectionManager,每个ConnectionManager将作为一个线程启动,每个ConnectionManagermanager负责ConnectionIO读写 检<connectionManager--是空表示该dbServer将到指定的否否否空是空否空是空poolConfig否否8否8否0否否否连接空闲多少时间将被(关闭)(time否 <dbServer实现类<property真实mysql<property<property<property<property<property<poolConfigclass=”com.meidusa.amoeba<property<property<property<property<property<property<property实现类<property<property<property<property<property<property<poolConfigclass=”com.meidusa.amoeba<property<property<property<property<property<property<property实现类<<factoryConfigclass=”commeidusa.amoeba.mysql<property<property<property<property<property<property<poolConfigclass=”com.meidusa.amoeba<property<property<property<property<property<property<property<dbServername="virtualdb"<poolConfig<property <property是空QueryRouter实现类,AmoebaFor否空否空否sql进行parsefalse是空null情况。所有sql将在默认得dbServer上面执行。(必选)否空启用needParseupdate、insert、delete语句将在这个pool中执行否空启用needParseselectpool否statmentcachesqlAmoebaforamoebaamoeba其他产品的特性(amoebaformysql)。与Amoebaformysqlaladdin必须用mysqlmysql协议,主要是方便适应广泛的使用者。aladdin后端可以同时连接各种数据库。只要这些数据库提供jdbc驱动。aladdin的出现可以解决企业在数据库整合上面提供积极的帮助。使用者不需要知道后端到底使用了什aladdin来分析sql语句,并且获得相应的要查询的 下面垂直切分(纵向)数据是数据按照业务、产品进行切分,比如用户数据、博客文章数据、数据、数据、群组数据等等每个业务一个独立的数据库或者数据库服务器。引入Amoeba将不需要客户端的干预就能很好地定位这些数据。 在 6.0版本上面如果想要读写分离并且读集群、写集群机器比较多情况下,用需要相当大的工作量,目前mysql 没有现成的lua。mysql lua就是它的全部,当然lua是相当方便的。那么同样这种东西需要编写大量的才能完成一个复杂的配置。而amoeba只需要进行相关的配置就可以满足需求。Mastermaster(可读写<dbServername="virtualSlave"<<dbServername="virtualSlave"<poolConfig <!--负载均衡参数1=ROUNDROBIN2=WEIGHTBASED <property <!--参与该pool负载均衡的poolName列表以逗号分割 <propertywirtePool=master<<queryRouter<property<property<property<property<propertyupdate/insert/deletequerywirtePoolselectreadPool垂直切分(纵向)数据是数据按照业务、产品进行切分,比如用户数据、博客文章数据、数据、数据、群组数据等等每个业务一个独立的数据库或者数据库服务器。userdb:包含有user表1、在amoeba安装 这儿省略了dbServer的配置,相关配置请参阅dbServer配置<queryRouter<queryRouter<property<property<property<property<property2、rule.xml配置文件相应配置,schema均为<?<?xmlversion="1.0"<!DOCTYPEamoeba:ruleSYSTEM<amoeba:rule<tableRulename="USER"schema="test"<tableRulename="MESSAGE"schema="test"<tableRulename="EVENT"schema="test"Insertintomessage(id,gmt_create_time,msg)values(111,now(),'onlyfortest');blogdb上面执行简单的配置即可完成基于amoeba的数据垂直切分方案。离。以userdb举例:构建master/slave结构<?<?xmlversion="1.0"<!DOCTYPEamoeba:ruleSYSTEM<amoeba:rule<tableRulename="MESSAGE"schema="test"<tableRulename="EVENT"schema="test"eBay单项功能的资源需求随着时间增长,仍然有可能超出单一系统的能力。我们常常提醒自己,“没有分个单元都能维持良好的性能价格比。这就是水平分割出场的时候了。eBay将各种交互都设计成无状态的,所以水平分割是轻而易举之事。用标准的负载均衡服务器来路由进入的流量。所有应用服务器都是均等的,而且任何服务器都不会维持事务性的状态,因此负载均衡可以任意选择应用服务器。如果需要处理能力,只需要简单地增加新的应用据作水平分割(或称为“sharding”)201/20的用户。随着用户数量的增长,以及每个用户的数据量增长,我们会增加的主机,将用户分散到的机器上去。商品数据、数据、帐户数据等等也都用同样的方式处理。用例不同,我们分割数据的方案也不同:有些是对主键简单取模(ID1的放到第一台主机,尾数为二的放到下一台,以策略。不过具体的分割方案如何,总的思想是支持数据分割及重分割的基础设施在可伸缩性上远比不ebay的数据水平切分提案应该是大家都能想到的,但数据切分以后我们如何我们的应用,我Amoeba提供对dba非常友好的数据切分规则表达式。1:abs(hash(id))mod2=0→blogdb-1规则2:abs(hash(id))mod2 →blogdb-<?<?xmlversion="1.0"<!DOCTYPEamoeba:ruleSYSTEM<amoeba:rule<rule<expression><![CDATA[abs(hash(id))mod2=0<rule<expression><![CDATA[abs(hash(id))mod2=1<tableRulename="EVENT"schema="test"比如:rule1ID。是select*frommessagewhereid=12多个parameters1select*frommessagewhereid=1的时候,amoebablogdb-22select*frommessagewhereidin(1,2,3,4,5)那么amoebablogdb-1、blogdb-2同时发起请1、ID2、ID 3、ID>4orCREATE_TIMEbetweento_date('2008-11-1200:00:00.0000')andto_date('2008-12-

JVMinitialjavaheapumjavaheapthesizeoftheheapfortheyoungthestacksizeforeach一般在server端的应用程序上面设置-Xms-Xmx命令行执行或者/etc/profile文件中添加:ulimit-s2048在amoeba.xml文件中server端的配置里面:readThreadPoolSize用于处理客户端连接发送过来的数据,跟数据库服务器返回的数据的线程数SideThreadPoolSize在读线程读完客户端的请求数据包以后,这个线程将会接手处理具体的业务逻辑(比如:parsesql、queryroute)serverSideThreadPoolSize–在server端数据库返回的数据包,合并多数据库返回的数据,将数区同样大小,这样才能确保在一次操作中就能和发送所需的数据。使用SendBufferSize属如果网络缓冲区小于提供给Write方法的数据量,则对Write方法的每次调用都将多次执行网设置您希望在接收缓冲区中为每次读操作的字节数。实际上,此属性的操作对象是为接收传入数据所分配的网络缓冲区空间。网络缓冲区应至少与应用程序缓冲区同样大小,这样才能确保在调用okhnn.ed方法时所需的数据是可用的。使用cvufrie属性设置此大小。如果应用程序将要接收批量数据,应为dd法的您一次作所的数据量。这将导致增加对d方法的调用次数,进而增加系统开销。truefalsefalse如果NoDelay为false,则直到Tcp收集到相当数量的输出数据之后,它才会通过网络发TCP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论