控制器之间客户端连接的分配

当客户端程序连接虚拟服务器的时候,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掉。

sequoia负载均衡相关推荐

  1. Nginx搭建负载均衡集群

    (1).实验环境 youxi1 192.168.5.101 负载均衡器 youxi2 192.168.5.102 主机1 youxi3 192.168.5.103 主机2 (2).Nginx负载均衡策 ...

  2. 【微服务架构】SpringCloud使用Ribbon实现负载均衡

    说在前面 软负载均衡的实现方式有两种,分别是服务端的负载均衡和客户端的负载均衡 服务端负载均衡:当浏览器向后台发出请求的时候,会首先向反向代理服务器发送请求,反向代理服务器会根据客户端部署的ip:po ...

  3. 解决nginx负载均衡的session共享问题

    之前有写过ubuntu环境下搭建nginx环境,今天来谈一下nginx session共享问题,查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享服务器有多台,用ngi ...

  4. 2021年大数据Kafka(十一):❤️Kafka的消费者负载均衡机制和数据积压问题❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的消费者负载均衡机制和数据积压问题 一.kafka ...

  5. 负载均衡中使用 Redis 实现共享 Session

    最近在研究Web架构方面的知识,包括数据库读写分离,Redis缓存和队列,集群,以及负载均衡(LVS),今天就来先学习下我在负载均衡中遇到的问题,那就是session共享的问题. 一.负载均衡 负载均 ...

  6. 一分钟了解负载均衡的一切

    一分钟了解负载均衡的一切 转自:http://developer.51cto.com/art/201609/517313.htm 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因 ...

  7. nginx+iis实现负载均衡

    nginx安装     Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoe ...

  8. Nginx反向代理负载均衡

    环境准备: 总共四台机器,两台装有Nginx的机器做负载均衡,两台机器装有Apache作为WEB服务器. 机器信息 hostname IP 说明 lb01 192.168.1.19 nginx主负载均 ...

  9. 加权轮询算法PHP,PHP实现负载均衡的加权轮询方法分析

    本文实例讲述了PHP实现负载均衡的加权轮询方法.分享给大家供大家参考,具体如下: 1. 负载均衡算法有哪些? 轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务 ...

最新文章

  1. 机器学习问题的十个实例【转】
  2. codebilcks怎么新建c++文件_赤峰将新建1280个公交候车亭丨明年,将对这6条街路实施改造|雨污分流|赤峰|候车亭|红山区|泵站...
  3. C#Windows服务程序安装常见问题解决方法
  4. python连接oracle导出数据文件
  5. sqlite3存储格式
  6. webbrowser 修改浏览器版本的方法
  7. intent几种传值数组、对象、集合(Array,Object,List)
  8. defineProperty AND defineProperties
  9. 错过了秋天的第一杯奶茶,不要错过秋天第一场黑客松
  10. 有一些无声话语,只有寻梦的人彼此听得见
  11. css 文字溢出文本时省略号代替
  12. J2EE基础篇——十三个规范
  13. 国产平台不能打印,对LINUX打印的一点疑问
  14. c语言rank函数使用实例,rank函数实例(1)
  15. 计算机基础-数据存储
  16. 判断用户flash是否安装了flash以及flash的版本
  17. Elasticsearch的dynamic 与 index.mapper.dynamic
  18. 数据链路层的重点协议
  19. 证券数据接口 查询证券编码及基本上市信息
  20. Android Q之气泡弹窗

热门文章

  1. HADOOP数据仓库
  2. MyEclipse6.5下载地址(含注册码)
  3. layui复选框默认选中
  4. oracle宿舍管理系统实训报告,宿舍管理系统实验报告..doc
  5. 通俗易懂数仓建模:范式建模与维度建模
  6. Nokia Open MSS 学习个人笔记
  7. 学习大数据需要什么基础?大数据要学哪些内容?
  8. 了解多层交换中的CEF FIB CAM TCAM
  9. 操作系统实验一:线程的创建与撤销
  10. 雅思作文模板.html,雅思写作模板必看范文