赞
踩
当客户端程序连接虚拟服务器的时候,Sequoia 连接器使用Sequoia URL连接到控制器。Sequoia URL包含了一个所有要用到的控制器的IP列表。默认的,Sequoia 控制器监听25322 端口。
如果当前选择的控制器失败了,将会自动从Sequoia URL定义的列表中重新取一个新的出来。
新的连接,根据预定义的负载均衡策略(随机,轮询,顺序),连接到一个控制器上。所有的属于这个连接的请求都会被发送到同一个控制器,但是这个控制器会把这些请求在它下面的后端之间进行的负载均衡。
一旦连接建立,一个针对某个虚拟数据库的用户名和密码的组合,会连同数据库的名字一起被发送到控制器的验证管理器中进行检查。
在后端之间进行负载均衡,有下面几种可选方案:
客户端连接可以分为下面两种:
AUTOCOMMIT模式
)或者事件持续期间分配的,然后这个连接被放回后端连接池。这两种连接都是Sequoia 分配的:如果没有连接可用,控制器会等待连接池提供可用的连接。
这里有一些持久化连接用法的典型例子:
AUTOCOMMIT
中), 比如在MySQL中SELECT LAST_INSERT_ID
.因为下面的原因,不推荐使用Sequoia 的持久化连接。
减低系统性能;
打开和关闭持久化连接是在集群范围内执行的,因此会降低系统性能;
会导致禁止后端或关闭数据库失败;
后端只有在所有的持久化连接都关闭后才能被disable。
每个连接的打开/关闭都会被记录到recovery log中。当一个checkpoint需要被添加到recovery log中时(比如在数据库库备份期间要disable掉后端),Sequoia 必须等当前打开的所有持久化连接都关闭完之后才能执行,因为连接的上下文不会被记录。
而且,虚拟数据库也只能在所有的后端都被disable掉之后才能关闭。所以,如果应用无限期的保持打开连接池中的连接的话,虚拟数据库将无法正常关闭。
那么在使用持久化连接时怎么防止这些情况发生呢。
上述失败可能发生如果我们这么使用Sequoia 的话:
close ()
关闭连接。确保你的应用显式的关闭了它们的连接。特别要检查连接池和连接重用计划。
如果你使用像Jboss那样的应用服务器。你必须配置连接池,因此没用的连接被续约并按照一定的规则关闭掉(idle-timeout
参数在虚拟数据库的配置文件中)。
注意:
使用Sequoia时,不推荐同时使用持久化连接和连接池。因此,如果你没用持久化连接,你应该把他们disable掉。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。