Amoeba 版本 0.12 (当时搜这篇文章主要是看Amoeba 的时间函数是什么。嘿。)
一、Master/Slave 结构读写分离:
Master: server1 (可读写)
slaves:server2、server3、server4(3个平等的数据库。只读/负载均衡)
amoeba提供读写分离pool相关配置。并且提供负载均衡配置。
可配置server2、server3、server4形成一个虚拟的 virtualSlave,该配置提供负载均衡、failOver、故障恢复功能
-
<dbServer name="virtualSlave" virtual="true">
-
<poolConfig>
-
<className>com.meidusa.amoeba.server.MultipleServerPool</className>
-
-
<property name="loadbalance">1</property>
-
-
-
<property name="poolNames">server2,server3,server4</property>
-
</poolConfig>
- </dbServer>
<dbServer name="virtualSlave" virtual="true">
<poolConfig>
<className>com.meidusa.amoeba.server.MultipleServerPool</className>
<!-- 负载均衡参数 1=ROUNDROBIN , 2=WEIGHTBASED -->
<property name="loadbalance">1</property>
<!-- 参与该pool负载均衡的poolName列表以逗号分割 -->
<property name="poolNames">server2,server3,server4</property>
</poolConfig>
</dbServer>
如果不启用数据切分,那么只需要配置QueryRouter属性
wirtePool=server1
readPool=virtualSlave
-
<queryRouter>
-
<className>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter</className>
-
<property name="LRUMapSize">1500</property>
-
<property name="defaultPool">server1</property>
-
-
<property name="writePool">server1</property>
-
<property name="readPool">virtualSlave</property>
-
-
<property name="needParse">true</property>
- </queryRouter>
<queryRouter>
<className>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter</className>
<property name="LRUMapSize">1500</property>
<property name="defaultPool">server1</property>
<property name="writePool">server1</property>
<property name="readPool">virtualSlave</property>
<property name="needParse">true</property>
</queryRouter>
那么遇到update/insert/delete将 query语句发送到 wirtePool,将 select发送到 readPool机器中执行。
二、数据切分:
这方面amoeba显然更加容易了。
举个数据切分例子:
select * from user_event where user_id='test' and gmt_create between Sysdate() -1 and Sysdate()
如果根据gmt_create 时间进行数据切分,比如 6个月进行切分一次
amoeba提供利用类似sql表达式进行数据切分:
规则1:GMT_CREATE > to_date('2008-01-01','yyyy-mm-dd') and GMT_CREATE < to_date('2008-05-31','yyyy-mm-dd')
规则1对应服务器1
规则2:GMT_CREATE > to_date('2008-06-01','yyyy-mm-dd') and GMT_CREATE < to_date('2008-12-31','yyyy-mm-dd')
规则2对应服务器2
上面的sql的条件 gmt_create 与规则里面的的gmt_create 进行 交集判断,如果存在交集则表示符合规则。
则会将sql转移到 规则1 的相应的服务器上面执行。
利用amoeba写出这种类似规则很容易,但是要想做到数据切分以后可线性扩容,那么这样的规则需要自己根据业务实际情况进行设置。
amoeba可同时将sql 并发分发到多台服务器、然后将结果合并再反馈给客户端,而且amoeba内部现成采用无阻塞模式,工作线程是不会等待的,并发请求多台 database server情况下,客户端等待的时间基本上面是性能最差的那台 database server+amoeba内部解析协议的时间
分享到:
相关推荐
这是针对amoeba for mysql的一个具体案例,实现水平切分和读写分离
Amoeba主要解决以下问题: a). 数据切分后复杂数据源整合 b). 提供数据切分规则并降低数据切分规则给数据库带来的影响 c). 降低数据库与客户端连接 d). 读写分离路由 通过Amoeba实现读写分离
Amoeba的高级使用包括如何快速配置Amoeba for MySQL,启动Amoeba服务,以及为数据库服务器创建负载均衡、数据切分和读写分离。此外,Amoeba还支持对已有实例进行性能调优,并提供了API和开发指南,以便开发者可以...
综上所述,数据切分和数据复制是现代数据库管理系统中非常重要的两个概念。它们各自都有各自的优点和适用场景。对于大型的分布式应用而言,合理地采用这些技术能够极大地提升系统的整体性能和稳定性。在实际应用中,...
综上所述,Amoeba作为一款面向分布式数据库的代理解决方案,通过其独特的设计和功能集,在解决数据切分、读写分离等问题的同时,大幅提升了系统的性能和可用性。对于希望构建高性能、可扩展且可靠的分布式数据库应用...
Amoeba作为一个专注于分布式数据库代理开发的项目,旨在解决数据切分、读写分离等问题,为用户提供高性能、高可用性的解决方案。 #### 二、分布式数据库系统的优势 分布式数据库系统相比于传统的集中式数据库系统...
总的来说,Amoeba提供了一套完整的解决方案,用于在单机上配置多个MySQL数据库,并通过读写分离和数据切分策略优化数据库性能和扩展性。这种配置方式在处理大量并发请求和大数据量存储时尤其有用,但同时也需要考虑...
Amoeba能够减少客户端与数据库服务器之间的连接数量,提供数据切分规则,降低因数据切分带来的复杂性,以及提供读写分离机制。 Amoeba的架构基于Java NIO框架,其无阻塞模式可以避免在大量并发情况下的系统资源浪费...
- **提升系统性能**:通过对数据进行合理切分和负载均衡,Amoeba能够显著提高系统的响应速度和处理能力。 - **易于管理和扩展**:Amoeba提供了直观易用的配置方式,使得系统的管理和维护变得更加简便,并支持灵活的...
Amoeba作为SQL路由工具,位于客户端和数据库服务器之间,对客户端透明,提供了负载均衡、高可用性、SQL过滤、读写分离以及数据路由等功能。 **Amoeba的主要特点和功能:** 1. **负载均衡**:Amoeba可以根据设定的...
在Amoeba架构中,它作为一个数据库代理开发框架,不仅提供基础的连接管理,还支持多种高级功能,如为特定数据库服务器创建负载均衡、数据切分和读写分离策略。用户可以通过Amoeba进行高级开发,创建新的数据库实例或...
Amoeba中间件提供了多种机制,如负载均衡、读写分离、数据切分等,用以优化数据库操作的效率和可靠性。 描述中提到的“#资源达人分享计划#”可能是一个社群或者平台,旨在共享和传播专业知识和技术资源。而标签中的...
【标题】"amoeba-mysql" 是一个针对MySQL数据库的分布式解决方案,旨在处理大规模数据切分和优化客户端对分布式数据的处理方式。Amoeba这个名字来源于其生物学特性,即能够分裂和扩展,这正是该软件在数据库领域的...
- **起源背景**:Amoeba项目的初衷是解决使用MySQL时遇到的一些挑战,特别是读写分离、数据切分、水平切分和负载均衡等问题。由于MySQL Proxy虽然提供了一种灵活的方式来实现这些功能,但实际操作中需要编写大量的...
4. **高可用性和负载均衡策略**:除了支持基本的读写分离外,Amoeba还提供了多种负载均衡策略,如轮询、根据当前活动连接数量等,以确保系统的高可用性和性能稳定性。 #### 五、AmoebaForMysql的快速入门 ...
这通常涉及到动态调整路由规则和数据分布策略,以实现无缝扩展。 5. 核心挑战 制定和选择合适的路由规则是数据切分的关键,需要考虑数据分布的均匀性、查询效率和扩展性。同时,如何在不影响服务的情况下进行数据库...
总结来说,解决MySQL海量数据存储和访问的策略主要包括数据切分(水平切分)、负载均衡、读写分离等,通过这些技术可以有效应对大数据场景下的性能挑战,保证系统的稳定性和扩展性。在实际应用中,需要根据业务需求...
Amoeba的主要作用是提供读写分离、垂直分库和水平分库的功能,以提高数据库系统的性能和可扩展性。下面我们将详细探讨Amoeba的配置及其在单机多MySQL数据库环境中的应用。 首先,Amoeba作为介于应用程序和数据库...