稳定高效的MySQL与MSSQL的连接复用/读写分离/Sharding-把HTTP的技术推进到数据层

读了一些有关数据库读写分离的文章,大多是官方开源的MySQL-Proxy以及其衍生项目,而末尾往往谈到在实际部署时的困难重重。首先学习测试和部署的周期较长,同时在数据库中间多加了一层代理便多了一层故障点,需要专业的运维人员来继续开发和耐心维护,如出现问题只能把问题交给社区。在业务压力增大后往往发现这层代理的延迟越来越高形成瓶颈。

因此我来谈谈NetScaler的DataStream技术。Citrix NetScaler负载均衡业内第一个也是目前唯一一个支持MySQL和MS SQL 等协议内容的产品。如果您接触了解过一些HTTP层面的负载均衡再来看本文,便会惊喜的发现虽然从代码来说HTTP协议和SQL协议完全不是一回事儿,但NetScaler最终实现了将HTTP的多重优势技术推进至数据库层面。

  1  连接复用技术

   保持每条tcp连接我们都需要消耗一定的系统资源,根据内存的大小,每台服务器可以支撑的并发连接非常有限。连接复用是非常普遍的优化技术。

连接复用是NetScaler的核心专利,很多厂商实现类似的功能都在向NetScaler付着专利费用。如图所示,客户端大量的TCP连接被NetScaler接管然后依据协议内容进行复用压缩,服务器减轻了新建的压力,只需要和NetScaler对话专心处理上层协议的内容响应。NetScaler将此技术扩展到了数据库协议,对于SQL传输来说,复用比通常在50:1以上。

http://netscaler.blog.51cto.com

2  内容交换技术(数据库读写分离等)

在HTTP处理时,NetScaler可以识别利用http请求的URL等内容进行分发,而在SQL层面需要理解select,drop,insert,update等等一系列语句进行读写分离等操作,最基本的原理如图:

@Netscaler_Insight

配置和管理非常简单,这里举个最简单的例子

  • 用图形向导生成策略

相信您已经看懂这条策略要做什么了:mysql请求的命令包含 ”select“  。 很简单不是吗?

  • 选择策略匹配目标SQL服务器

3  内容交换技术(分片)

原理同上,我们可以根据查询的库或表等等,查询的内容等导向不同的数据库服务器

4 健康探测技术-数据库

当后端有多台服务器时,必须判断后端是否在线正常。对于网站,我们可以检查网页的内容。而对于数据库,我们可以发出任意的SQL语句并且依据返回值判断健康状况,如果值和预期的不符,不会把客户端的请求发送到这台服务器

5.安全性


NetScaler可以做多重策略来控制访问安全并且生成详细日志供性能分析和审计。在请求未传递给后端服务器前提前做出响应动作。

查看SQL性能日志

同时对于前端来说,NetScaler更是性能超高的Web应用防火墙,可以防御SQL注入,防止信息泄漏等等恶意攻击

6.稳定性、性能和扩展性

作为应用交付的领导者,NetScaler一直以高稳定低延迟著称。可以主备部署或者集群部署,配置后便后顾无忧。随着业务的增长使用license释放设备更高的性能或者添加新设备横向扩展!

本文简述了NetScaler对于数据库的相关技术,您可关注微博 @Netscaler_Insight 以及本博客交流探讨。 下篇blog再见!

时间: 2024-11-05 21:41:06

稳定高效的MySQL与MSSQL的连接复用/读写分离/Sharding-把HTTP的技术推进到数据层的相关文章

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 转载

http://heylinux.com/archives/1004.html MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy

MySQL深入10-利用Ameoba实现读写分离

本篇博文主要介绍利用Ameoba实现MySQL的读写分离功能,而MySQL官方的mysql-proxy需要自己编写复杂的lua脚本才能实现同样的功能,故个人还是倾向使用amoeba哦: =================================================================== 1 简介 2 准备 2.1 时间同步 2.2 配置MySQL主从复制架构 3 ameoba安装配置 3.1 安装配置JDK 3.2 安装ameoba 3.3 配置ameoba 3

Mysql一主多从和读写分离配置简记

Mysql一主多从和读写分离配置简记 标签: mysql数据库服务器class数据库servermanager 2012-05-30 16:44 14981人阅读 评论(1) 收藏 举报  分类: 数据库 版权声明:本文为博主原创文章,未经博主允许不得转载. 近期开发的系统中使用MySql作为数据库,由于数据涉及到Money,所以不得不慎重.同时,用户对最大访问量也提出了要求.为了避免Mysql成为性能瓶颈并具备很好的容错能力,特此实现主从热备和读写分离.在此简做纪要,以备日后所用! 一.配置主

linux下mysql基于mycat做主从复制和读写分离之基础篇

Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , mycat1.6-RELEASE jdk1.7及其以上版本2.实现步骤一(mycat实现读写分离) 1.首先在两台服务器安装mysql 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rp

docker部署django项目、mysql主从搭建、django实现读写分离

目录 docker部署django项目 1.1 基于python基础镜像 将本地django项目打包并发到远程服务器上 将服务器上的.zip django项目解压 部署的具体流程 1.2 基于dockerfile 2 mysql主从搭建 3 django实现读写分离 我们使用python镜像源构建的出的容器,是一个纯净的debian系统下的python环境,在容器内部要想安装vim.nginx等,就不能使用yum install ...了,需要使用apt-get源.首先更新apt-get源,使用

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的. 如下图所示: 下面是我在实际工作过程中所整理的笔记,在此分享出来,以供大家参考. 一.MySQL的安装与

基于主从复制的Mysql双机热备+amoeba实现读写分离、均衡负载

读写分离指的是客户只能在主服务器上写,只能在从服务器上读,当然了,这也是要看配置,你可以在主服务器配置读的功能,但是在从服务器上只能读不能写,因为从服务器是基于binlog对主服务器的复制,如果在从服务器上写的话,会造成主从不一致的结果.mysql实现读写分离,写的压力虽然没有减少,但是读的压力瞬间就减少了一半. Amoeba的中文意思是阿米巴.变型虫Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy代理服务器.它集中地响应应用的请求,依据用户事先设置的规则

MySQL 5.6通过MMM实现读写分离的高可用架构

上一篇博文我们使用keepalived+主从同步搭建了一个简单的MySQL高可用架构(详见http://blog.51cto.com/jiangjianlong/1981994),今天再分享下通过MMM搭建的实现MySQL读写分离的高可用群集.MMM (Master-Master Replication Manager for MySQL)是使用perl开发的MySQL主主复制管理器,可实现读写分离的高可用架构,对主库实现写请求的高可用,对从库实现读请求的负载均衡.本文的架构示意图如下: 一.部

Linux下mysql基于MyCat实现主从复制和读写分离

1.1 MyCat介绍及应用场景MyCat介绍MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里.MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL.S