Vertica系列: Vertica DB连接负载均衡
背景
谈到负载均衡, 对于数据库集群需要区分几个概念:
- 运算的负载均衡, Vertica 本身是 MPP 数据库, SQL 操作自动会利用多台机器来加快处理速度.
- 数据库连接的负载均衡, Vertica 和 Teradata 一样都是无主节点的架构, 这种架构允许客户端连接任意一个节点, 连接后将由这个节点负责和客户端交互.
- 数据库连接的 Fail over, 这个概念不同于会话 node 的负载均衡. 对于多数数据库, 数据库连接字符串(比如 JDBC)只能设定一个 IP 地址, 如果这个 IP 的节点宕机, 客户端就无法连接. Vertica 允许指定多个 IP 地址, 如果第一个 IP 的节点无法连接, Vertica JDBC driver 会使用其他 IP 尝试连接.
上面这几个特性 Vertica 都支持. 另外 Vertica 是一个纯列式数据库, 没有数据倾斜问题. 因为这些特性, 使用上稍加注意, Vertica 就不太容易出现某个节点成为性能瓶颈.
下面重点讲解如何开启数据库连接的 Load balance 和 Fail over.
Server 端的配置
通过 SET_LOAD_BALANCE_POLICY() 函数设置负载均衡策略, 共有三种, 分别是 NONE/ROUNDROBIN/RANDOM , 这三个设置的含意是很显然的, NONE 是禁用负载均衡, ROUNDROBIN 是轮询, RANDOM 是随机, 推荐使用 ROUNDROBIN 策略. 具体设置代码为:
--设置节点load balance的方法, 有NONE/ROUNDROBIN/RANDOM三种
SELECT SET_LOAD_BALANCE_POLICY('ROUNDROBIN');--查询服务器端的 Load balance 策略
SELECT GET_LOAD_BALANCE_POLICY();
Java代码客户端的配置
下面是一个 JDBC 示例代码, 开启了 Load balance 和 Fail over.
Properties myProp = new Properties();
myProp.put("user", "dbadmin");
myProp.put("password", "vertica");# 开启 connection failover
myProp.put("BackupServerNode", "VerticaHost02,VerticaHost03");# JDBC客户端开启Load balance
myProp.put("ConnectionLoadBalance", 1);
conn = DriverManager.getConnection(
"jdbc:vertica://BadVerticaHost:5433/vmart", myProp);
客户端多连接几次, 并执行下面SQL, 观察 node_name 节点是否不同, 就可以验证负载均衡是否工作,
SELECT node_name,client_version FROM CURRENT_SESSION;
DbVisualizer 工具开启负载平衡
Vertica 查询工具并不多, DbVisualizer 工具是最好的一个, 具体配置:
升级 JDBC driver
DbVisualizer 工具自带的 Vertica jdbc driver 版本太低, 要支持负载均衡, JDBC driver 至少是7.0以上, 推荐使用和服务器版本一致的jdbc, 这里使用的是 vertica-jdbc-8.1.1-0.jar .
在 DbVisualizer 工具菜单 Tool/Driver manager界面中, 选择 Vertica 数据库类型, 删除原有的自带老版本的jdbc driver, 增加新版的driver.
修改已有的 Vertica connection
新建或修改一个Vertica connection, 选择 connection 的 Properties - Driver Properties快捷菜单, 找到 connectionloadbalance, 将它的值设置为 true, 点击 Apply 应用.
验证
客户端多连接几次, 并执行下面SQL, 观察 node_name 节点是否不同.
SELECT node_name,client_version FROM CURRENT_SESSION;
转载于:https://www.cnblogs.com/harrychinese/p/vertica_load_balance.html
Vertica系列: Vertica DB连接负载均衡相关推荐
- Spring Cloud 系列之 Netflix Ribbon 负载均衡
什么是 Ribbon Ribbon 是一个基于 HTTP 和 TCP 的 客服端负载均衡工具,它是基于 Netflix Ribbon 实现的. 它不像 Spring Cloud 服务注册中心.配置中心 ...
- 解决k8s中的长连接负载均衡问题
目录 长连接与短连接: 简介 使用步骤 适用场景 当k8s遇上长连接: 问题描述 解决方案 长连接与短连接: 简介 长连接是指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数 ...
- Exchange 2013部署系列之(五)NLB负载均衡
Exchange 2013部署系列之NLB负载均衡(五) 前面第四篇章介绍了Exchange 2013的数据库的DAG搭建方法,下面我们将对前端CAS服务器进行NLB负载均衡的组建.在Exchange ...
- 面试必会系列 - 5.3 LVS负载均衡
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
- socket 获取回传信息_基于netty框架的socket长连接负载均衡解决方案 oswl
前言 物联网如今是一个大的趋势,但是概念还比较新颖.大家对这一块的技术积累也比较匮乏,借此前段时间摩拜单车出现了大规模瘫痪的现象.我们今天来讨论一下物联网项目的开发方式. 关于tcp/ip 相关的知识 ...
- SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)...
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Ribbon 负载均衡 2.具体内容 现在所有的服务已经通过了 Eureka 进行了注册,那么使用 Eureka 注册 ...
- 基于netty框架的socket长连接负载均衡解决方案
socket通讯的单机瓶颈 物联网的项目socket使用方式有两种: 短连接的socket请求 维持socket长连接的请求 对于socket短链接来说就好比是http请求,请求服务器,服务器返回数据 ...
- Nginx教程系列五:实现负载均衡配置
文章目录 1. 案例 1.1 环境准备 1.2 实现效果 1.3 修改Nginx配置文件 1.4 测试 2. 负载均衡策略对比 2.1 轮询 2.2 权重 2.3 iphash 2.4 fair 1. ...
- linux集群系列(4) --- LVS之负载均衡集群 --- 持久连接
一.简介 1.1. lvs的持久连接简介 先说说lvs的持久连接能干什么:无论你选择lvs的何种转发策略,如果你想确定来自某一个客户端的所有连接均返回到同一台Real Server,就需要LVS的持久 ...
最新文章
- 跟谁学这2年间做的六件事
- R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(颜色配置:连续色彩、离散色彩、色彩梯度)实战
- 使用 UIWebView 来播放视频
- 概率统计:第四章 随机变量的数字特征
- 19、Java并发性和多线程-嵌套管程锁死
- wiki----为用户设置管理员权限
- C++有的地方为什么要类内定义,类外实现(类内声明,类外初始化)?
- MISC | base64隐写
- 如何从完整的文件路径中分离文件名和路径名?
- Keras序列模型学习
- datagrip防止xx后弹窗
- php 显示代码行数据,几行php代码把数据格式化成树形结构
- c语言所有关键字作用,void_C语言void关键字详解
- Apache Tiles的使用 前配置
- 侍魂服务器维修,侍魂胧月传说合服活动开启 4月15日更新内容预告
- OpenCV学习笔记:反色显示图片、鼠标事件、键盘事件和窗口滑动条操作
- App 抓包-Fiddler简单使用教程
- Logisim元件用法详解四:Arithmetic 运算器
- 【Power Automate】在power automate中使用SharePoint rest api(Send an http request to SharePoint)获取列表数据
- android 小米相机权限,小米如何设置访问相机权限设置
热门文章
- 可以将道德条款纳入开源许可证吗?
- VS 2019 for Mac 8.1 正式版和 8.2 预览版发布
- python通用数据库连接_python 连接数据库pg
- Vue中基于Vuex使用echarts组件动态数据绑定的方法
- js 判断 ““,null,undefined
- abb工业机器人指令lf怎么用_工业机器人十万个怎么办-不清楚机器人MoveL直线运动指令怎么办?...
- eclipse插件开发(四) 流程图绘制插件(雏形)
- mysql innodb 事务_MySQL学习笔记之InnoDB事务实现
- android ndk 编译选项,Android NDK 对于c++的支持(mk文件内编译选项)
- linux安装mathematica7,Linux下面如何安装maple,mathematica,matlab这类软件?