控制器之间客户端连接的分配
当客户端程序连接虚拟服务器的时候,Sequoia 连接器使用Sequoia URL连接到控制器。Sequoia URL包含了一个所有要用到的控制器的IP列表。默认的,Sequoia 控制器监听25322 端口。
如果当前选择的控制器失败了,将会自动从Sequoia URL定义的列表中重新取一个新的出来。
新的连接,根据预定义的负载均衡策略(随机,轮询,顺序),连接到一个控制器上。所有的属于这个连接的请求都会被发送到同一个控制器,但是这个控制器会把这些请求在它下面的后端之间进行的负载均衡。
一旦连接建立,一个针对某个虚拟数据库的用户名和密码的组合,会连同数据库的名字一起被发送到控制器的验证管理器中进行检查。
在后端之间分配只读请求
在后端之间进行负载均衡,有下面几种可选方案:
- least pending requests first
- 请求被发送到等待执行请求的队列最短的那个后端去,也就是等待的请求数最小的将被执行。正在等待的请求队列是一个后端负载的准确估计,因此这种方法是一种有效的动态负载均衡机制。round robin
- 简单轮询的负载均衡:第一个请求发送到第一个后端,第二个请求发送到第二个后端,依此类推。不断的循环,直到请求又从第一个后端开始。
- weighted round robin
- 跟轮询方法相同,但是给每个后端分配了一个权重值。这个值决定了这个后端相对于其他后端接受负载的比例。比如,一个后端的权重值为2,那么它负载的请求数是权重为1的后端的两倍。
处理Sequoia中的客户端连接上下文
客户端连接可以分为下面两种:
- 非持久化连接(non-persistent connections)
- 一个非持久化连接是一个到后端的连接,这个连接是在查询时(在
AUTOCOMMIT模式
)或者事件持续期间分配的,然后这个连接被放回后端连接池。
- 持久化连接(persistent connections)
- 客户端持续连接每个后端期间,这个连接被分配为一个专用连接。当使用一个持久化连接时,这个连接的上下文和状态都被Sequoia保存。
这两种连接都是Sequoia 分配的:如果没有连接可用,控制器会等待连接池提供可用的连接。
使用持久化连接的典型例子
这里有一些持久化连接用法的典型例子:
- 为某个单独的连接设置一个可用的环境或连接属性(通常使用SET xxx commands)
- 创建并操作一个临时表
- 要得到这个连接中前一个操作的信息(在
AUTOCOMMIT
中), 比如在MySQL中SELECT LAST_INSERT_ID
.
使用持久化连接的相关问题
因为下面的原因,不推荐使用Sequoia 的持久化连接。
减低系统性能;
打开和关闭持久化连接是在集群范围内执行的,因此会降低系统性能;
会导致禁止后端或关闭数据库失败;
后端只有在所有的持久化连接都关闭后才能被disable。
每个连接的打开/关闭都会被记录到recovery log中。当一个checkpoint需要被添加到recovery
log中时(比如在数据库库备份期间要disable掉后端),Sequoia
必须等当前打开的所有持久化连接都关闭完之后才能执行,因为连接的上下文不会被记录。
而且,虚拟数据库也只能在所有的后端都被disable掉之后才能关闭。所以,如果应用无限期的保持打开连接池中的连接的话,虚拟数据库将无法正常关闭。
那么在使用持久化连接时怎么防止这些情况发生呢。
上述失败可能发生如果我们这么使用Sequoia 的话:
- 在独立应用中,没有显式的使用
close ()
关闭连接。
- 像jboss那样的应用服务器,它们会代替应用去请求连接池。
确保你的应用显式的关闭了它们的连接。特别要检查连接池和连接重用计划。
如果你使用像Jboss那样的应用服务器。你必须配置连接池,因此没用的连接被续约并按照一定的规则关闭掉(idle-timeout
参数在虚拟数据库的配置文件中)。
注意:
使用Sequoia时,不推荐同时使用持久化连接和连接池。因此,如果你没用持久化连接,你应该把他们disable掉。
分享到:
相关推荐
PostgreSQL的高可用性和负载均衡是数据库管理中的关键议题,旨在确保系统持续稳定运行和高效的数据处理。在本文中,我们将探讨几种常见的解决方案,包括它们的原理、优缺点以及适用场景。 1. **共享磁盘失效切换**...
期待已久的macOS Sequoia 15.0正式版终于在中秋佳节之时发布了,系统代号:24A335,小编通过 AppStore下载并制作了黑苹果原版镜像,有想安装macOS Sequoia15的童鞋可以下载尝尝鲜。 macOS Sequoia推出了一系列新功能,可...
Sequoia EFI 1、修改了配置,驱动 intel 9260 网卡 wifi、蓝牙 2、机器:I7-8550U+UHD620+ intel AC-9260NGW
西门子Sequoia 512是一款医疗超声诊断设备,属于西门子医疗解决方案的产品线之一。根据提供的信息,Sequoia 512可以分为不同型号,其中包括ACUSON Sequoia 512超声系统和ACUSON Sequoia C512超声心动描记系统。这类...
机器配置:华硕的 vivobook s14,I7-8550U+UHD620 1、在 MACOS12、13,安装时取消勾选IntelGraphicsFixup.kext,升级后要勾选上,否则声音没有输出;macos14 时不需要勾选。...2、Sequoia可升级安装,已测试 15.0
在分布式环境下,"sequoia"可能具备集群和复制功能,以提供高可用性和负载均衡。这通常涉及到网络通信库,如Boost.Asio或ZeroMQ,以及一致性哈希、Raft或Paxos等分布式一致性算法。 总之,"sequoia"项目是一个基于...
【Sequoia项目详解:预测蛋白质二级结构的生物信息学工具】 Sequoia是一个专注于蛋白质二级结构预测的开源软件项目,其源代码存放在名为"Sequoia-master.zip"的压缩包中。在生物信息学领域,理解蛋白质的二级结构...
macOS_Sequoia_15.1.password(imacos.top).rdr.split.046
为了确保该公司的软件平台能在 IBM 的主流服务器上良好地运行,Sequoia Media Manager 在马萨诸塞州 Waltham 的 IBM Solution Partnership Center(解决方案合作中心,SPC)接受了可移植性测试。该中心经验丰富的...
5. **无缝适应**:Sequoia设计为能够适应各种策略变化,无论是控制台测试还是实际工作负载,都能实现平滑过渡,确保服务的连续性和一致性。 在实施Sequoia的过程中,研究人员使用了受控和现实世界的工作负载进行...
Sequoia项目很可能是一个用于构建Web应用程序的工具,鉴于“Sequoia-master”这一文件名,我们可以推测这是项目的主要分支或源代码仓库的主目录。在开源软件开发中,“master”分支通常代表了项目的主线,是最稳定的...
Sequoia是一种数据库集群中间件,可提供负载平衡和透明的故障转移。 数据库在多个节点上复制,并且Sequoia平衡了它们之间的查询。 红杉支持在线维护和恢复操作。
**Sequoia PGP包装器在Nim中的应用** Sequoia PGP是现代、安全且高效的OpenPGP实现,而`sequoia.nim`则是一个专门针对Nim编程语言设计的Sequoia PGP包装器。这个包装器允许Nim开发者轻松地在他们的项目中集成PGP...
【ST Sequoia FLI32626H-BG 数字视频处理器/双通道LCD电视控制器数据表】 STMicroelectronics的Sequoia FLI32626H-BG是一款高级数字视频处理器,同时也兼备双通道LCD电视控制器的功能。这款芯片专为高清视频处理和...
#SEQUOIA 目前,这只是一个很小的16步矩阵Midi音序器,几乎没有功能。 下载 依存关系 外部的 内部的 Java文档 设计 即将推出的功能 处理方式 控制步骤数 速度控制
macOS_Sequoia_15.1.password(imacos.top).rdr.split.033
macOS_Sequoia_15.1.password(imacos.top).rdr.split.035
macOS_Sequoia_15.1.password(imacos.top).rdr.split.049
macOS_Sequoia_15.1.password(imacos.top).rdr.split.034
macOS_Sequoia_15.1.password(imacos.top).rdr.split.025