sequoia的架构

来源:互联网 发布:ubuntu配置软件安装源 编辑:程序博客网 时间:2024/06/14 16:05

下面讲讲Sequoia的组件和他们各自的功能。

下面这些术语在我们下面讨论和描述Sequoia的架构时将会用到:

虚拟数据库(virtual database) 是指在该集群中载入的不同的数据库服务器上数据库实例的分发视图。

节点(node) 是指一台物理机器,它可以是一个控制器(controller),也可以是一个数据库服务器,或者两者都是。

数据库服务器 是一个在虚拟数据库(virtual database)中运行的数据库引擎的实例。

后端(backend) 是一个Sequoia对象,用来管理一台受管的数据库服务器。

控制器(controller) 是运行在JVM中的一个Sequoia控制器(controller)实例。
Sequoia connector 连接着客户端应用和控制器(controller)。Sequoia的基本安装只包含一个用于java客户端的jdbc驱动,但是Carob项目提供了用于其他客户端应用的连接器。

Sequoia jdbc驱动

Sequoia JDBC驱动是一个type 4 JDBC驱动,它转发所有的数据库请求到Sequoia控制器(controller).

如果你正在使用Sequoia和Java客户端,那么你要用Sequoia驱动替换掉客户端原来使用的特定数据库的驱动,使客户端应用通过Sequoia驱动连接到集群.Perl客户端也可以通过DBD::JDBC Perl模块和Sequoia驱动来访问Sequoia.

Sequoia控制器(controller)

Sequoia控制器(controller)是一个Java程序,它实际上是Sequoia connector和后端(backend)之间的一个代理.控制器(controller)enable受管的一组数据库暴露给客户端应用作为一个虚拟数据库(virtual database).Sequoia控制器(controller)使用原生的数据库JDBC驱动访问数据库.

后端(backend)

后端(backend)是用来管理它下面数据库服务器的一个Sequoia对象:

后端(backend)是指一个数据库服务器实例的Sequoia视图
后端(backend)对象可以使用集群管理应用来管理.
当后端(backend)被disable时,它下面的数据库服务器的实例仍然是可操作的.比如要执行一次数据库备份操作,为了防止在备份过程中执行请求,确保数据库的一致性,这个时候就要把后端(backend)disable掉.

每个控制器(controller)对应专门的一组后端(backend):为了确保数据库的一致性,数据库在不同的控制器(controller)间不能共享.

控制器(controller)通讯协议

控制器(controller)使用一个组播协议来交换信息,维护相互之间状态信息的一致性.这种控制器(controller)之间的数据复制防止了单点故障的发生.

只有数据库update和commit/rollback命令用组播协议广播给所有节点,所有其他的命令都在控制器(controller)内本地执行.

默认的,Sequoia控制器(controller)通讯是使用Appia实现的.

虚拟数据库(virtual database)

一个虚拟数据库(virtual database)虚拟了一个独立的数据库,但是Sequoia控制器(controller)虚拟了一个关系式数据库管理系统(RDBMS).换句话来说,一个RDBMS可以支持多个数据库,那么一个控制器(controller)也就可以提供多个虚拟数据库(virtual database)。

一个虚拟数据库(virtual database)由下面几部分组成

验证管理器(authentication manager)- 在建立连接时,验证虚拟数据库(virtual database)的用户名密码和真实数据库服务器的用户名密码的映射是否正确。关于这个更多的信息,请看Sequoia 3.0安装配置指南中配置Sequoia用户名和密码一节。

请求管理器(request manager)-处理Sequoia connector转发来的客户端请求。
备份管理器(backup manager)-执行数据库备份还原操作,在控制器(controller)之间传送备份文件。
后端(backend)-后端(backend)用来管理它下面的数据库服务器。

Sequoia_architecture

一个虚拟数据库(virtual database)和它的组件被配置在一个特定控制器(controller)的虚拟数据库(virtual database)配置文件中。换句话说,要配置一个虚拟数据库(virtual database),你必须有两个对应这个虚拟数据库(virtual database)特有的特定控制器(controller)的配置文件。

请求管理器(request manager)

请求管理器(request manager)包含了控制器(controller)的核心功能。当一个请求从Sequoia connector进来时,它首先被传递到这个虚拟服务器相关的请求管理器(request manager)中。

请求管理器(request manager)由下面几部分组成,在后面我们会对它们进行详细说明:

请求调度器(request scheduler)
负载均衡器(load balancer)(load balancer)
recovery log

缓存 三个可选的请求缓存:

  • 元数据缓存,缓存结果集的元数据(比如列名,类型等),它通常在创建结果集时用到。
  • 解析缓存,它缓存解析的结果。这种缓存尤其是对于prepared statements非常有用。
  • 查询结果缓存,它缓存了只读查询的结果:这个很容易理解,如果一个查询要执行多次,那么使用这种缓存时,只会请求数据库一次,然后一直从缓存中读取。
请求调度器(request scheduler)

请求调度器(request scheduler)调度请求并确保查询精确一致。

Sequoia使用一个传递调度方法,它给每个查询分配一个唯一的标识,然后转发到负载均衡器(load balancer。这个标识在后面被用来确保写操作被以相同的顺序发送到所有的后端(backend)。

每个数据库服务器最终执行这个计划并锁定。锁定的时间依赖于数据库引擎。

负载均衡器(load balancer)(load balancer)

从请求调度器(request scheduler)出来,客户端请求就到达了负载均衡器(load balancer)。

Sequoia的负载均衡机制提高了数据库集群的整体性能。它在后端(backend)之间根据预先定义好的负载均衡方式来分配请求:用户可以选择一个最适合他们系统的方式。关于负载均衡方式的更多信息,请看 Sequoia的负载均衡 一章。

Recovery log

Recovery log是一个事件日志,它记录了那些更新虚拟数据库(virtual database)的所有请求和事件,可以用来进行数据库的恢复和同步。

备份管理器(backup manager)

备份管理器(backup manager)和recover log一起,允许动态地向虚拟数据库(virtual database)中添加新的后端(backend)而不用重启整个系统。类似的,当一个后端(backend)恢复要进行错误恢复时,你可以使用备份管理器(backup manager)和recovery log很容易的重新enable它,

Sequoia安装包含了一个通用的和几个特定的关系数据库管理系统的备份器。你也可以使用你自己的备份管理器(backup manager)代码。更详细的可以看Sequoia 3.0 安装配置指南中如何配置备份管理器(backup manager)。

 
原创粉丝点击