Amoeba 作为DataBase Proxy的开发框架。致力于解决数据切分、读写分离。以下将为您介绍
一、Amoeba 框架简介
• Built on Java NIO
1. 采用java NIO 框架无阻塞模式,不像传统的Socket编程在大量并发的情况非常浪费系统资源、
而且可扩展性也较差
• Reusable Server Connection
Amoeba 提供与数据库连接的可重用度非常高,在Amoeba系统内所Database Connection同时共享
给所有连接到Amoeba的客户端
• 提供读写分离、数据切分
1. 传统的读写分离技术需要通过客户端或者相关的Database Driver技术才能解决,而且客户端的
配置也比较复杂
2. 单台Database 性能总是有限制的,基于Amoeba上面可以寻找一种可线性扩展的多数据库支持。
Amoeba为DBA提供一种非常友好的类似SQL语法的数据切分规则同时客户端不用担心过多的
DataBase Server会给应用带来更多的配置。
• 支持高可用性、负责均衡
1. Amoeba 提供Database 连接的异常检测与连接恢复功能。
2. 用户可节省使用其他昂贵的负载均衡的硬件设备,Amoeba提供多台Database Server负载均衡策略
(轮询、当前活动连接数量)
二、amoeab 序列图
三、启动过程解析
1. 加载Log4j配置文件,配置日志信息
2. 初始化ProxyRuntimeContext ,比如加载配置文件,做一些初始化操作,设置一些上下文信息
3. 注册Reporter 功能
4. 创建Mysql客户端代理的连接管理器(该管理器管理客户端到代理服务器和代理服务器到服务端的连接,并调度分配连接)。
5. 读取IP权限表,并注册到Mysql连接管理器中
6. 最后启动服务。启动服务以后,Mysql 连接管理将监听指定的端口,开始提供服务。
四、MysqlClientConnectionManager机制
MysqlClientConnectionManager 的类的继承关系如下:
其中Looping在run方法中做两件事情:
- 执行方法 willStart(),做端口监听的相关信息初始化操作,详细可见: ServerableConnectionManager.willStart() 方法
- iterate() : 轮询监听端口,以处理响应的网络事件(包括从客户端<--->Mysql代理服务器 和 Mysql代理服务器<-->mysql目标服务器之间的交互事件)
MysqlClientConnectionManager 在收到网络事件以后,调用 MySqlCommandDispatcher 对网络事件进行分发处理(详细的分发方法后续详细分析)。
分享到:
分享到:
相关推荐
标题中提到的“基于Amoeba中间件的分布式数据库管理系统”涉及了数据库技术领域中的一个重要分支,即分布式数据库管理系统(Distributed Database Management System, DDBMS)。分布式数据库管理系统的出现是为了...
### amoeba分布式数据库解决方案 #### 一、分布式数据库的发展背景及优势 随着互联网技术的快速发展,数据量呈爆炸性增长,传统的集中式数据库系统逐渐暴露出其局限性,包括性能瓶颈、可靠性问题以及扩展性不足等...
### Amoeba: 分布式数据库Proxy解决方案 #### 背景与意义 随着信息技术的快速发展及互联网应用的广泛普及,传统的集中式数据库系统逐渐暴露出其局限性,包括性能瓶颈、可靠性问题以及扩展性不足等。为了克服这些...
### 分布式数据库Proxy解决方案(MySQL负载均衡) #### 背景 随着互联网技术的快速发展,数据量呈爆炸性增长,传统的集中式数据库系统逐渐暴露出其局限性,包括性能瓶颈、可靠性问题以及扩展性不足等。为了克服...
Amoeba是一个分布式数据库中间件,它能够将一个MySQL实例透明地扩展到多个节点,实现数据的高可用性和负载均衡。这个tar文件可能包含了Amoeba运行所需的全部文件,如配置文件、库文件和可执行文件等。 描述中提到了...
Amoeba MySQL 是一个分布式数据库系统,它基于开源的 MySQL 数据库引擎,旨在提供高可用性、可扩展性和性能优化。3.0.5 RC(Release Candidate)版本是该软件的一个候选发布版本,通常在正式版发布前,供用户测试和...
在分布式数据库领域中,Amoeba作为分布式数据库代理开发框架,扮演着重要的角色。Amoeba致力于解决数据切分问题,以及客户端在处理分布式数据时的“集中式”问题。Amoeba对客户端是透明的,它位于客户端和数据库...
Amoeba for MySQL致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当query 路由功能,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性...
Amoeba属于分布式数据库代理开发框架,专注于分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户 端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请 求...
【标签】"amoeba" 和 "mysql" 指出Amoeba是为MySQL数据库设计的中间件,它可以无缝集成到现有的MySQL环境中,用户无需对应用程序进行大幅度的修改就能享受分布式数据库带来的好处。Amoeba作为MySQL的一个扩展,它在...
Amoeba是一种分布式数据库中间件,可与MySQL Cluster结合使用,提供更高级别的负载均衡和数据分片功能。Amoeba将SQL请求分散到多个MySQL实例,以提升系统处理能力。在入门级amoeba.doc文档中,可能包含关于如何设置...
Amoeba 是一个分布式数据库中间件,主要用于MySQL的读写分离。它的主要作用是将读操作分发到多个从库,从而减轻主库的压力,提高系统整体的读取性能。Amoeba 通过透明的方式工作,应用程序无需修改即可直接连接到...
这个软件基于Java致力于MySQL的分布式数据库前端代理层,处于在应用和数据库之间,对客户端透明,它主要在应用层访问MySQL的时候充当SQL路由功能,解析应用传递过来的SQL语句,专注于分布式数据库代理层(Database ...
Cobar是由 Alibaba 开源的 MySQL 分布式处理中间件,它可以在分布式的环境下看上去像传统数据库一样提供海量数据服务。 Cobar自诞生之日起, 就受到广大程序员的追捧,但是自2013年后,几乎没有后续更新。在此情况下...
Amoeba是一种分布式数据库中间件,主要用于MySQL数据库的水平扩展。它通过分片(Sharding)技术将大型单一数据库拆分为多个较小的部分,称为分片,然后将这些分片分布到不同的服务器上。Amoeba在各个分片之间提供...
MySQL集群是一种分布式数据库解决方案,通过复制和分发数据到多个节点来提高可用性和可扩展性。Amoeba作为集群的一部分,可以协助实现这一目标。 在压缩包的文件列表中,我们可以看到以下几个关键文件: 1. README...
"amoeba-mysql-binary" 是一个与MySQL数据库相关的开源项目,其主要功能是提供一种分布式解决方案,用于扩展MySQL服务器的能力,提升数据库的可扩展性和可用性。Amoeba这个名字来源于生物学中的变形虫,寓意该系统...
Amoeba MySQL 作为一个项目,可能是一个数据库中间件或分布式数据库解决方案,用于扩展 MySQL 的性能和可用性。它可能通过将数据库操作分片到多个 MySQL 实例上来实现水平扩展,从而提高处理大量并发请求的能力。...
Amoeba是一款开源的分布式数据库前端代理层,主要用于MySQL数据库的分布式管理。它在2008年开始发布,设计目标是解决传统集中式数据库系统的性能瓶颈、可靠性和可扩展性问题。Amoeba作为SQL路由工具,位于客户端和...