读了一些有关数据库读写分离的文章,大多是官方开源的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等等一系列语句进行读写分离等操作,最基本的原理如图:
配置和管理非常简单,这里举个最简单的例子
- 用图形向导生成策略
相信您已经看懂这条策略要做什么了:mysql请求的命令包含 ”select“ 。 很简单不是吗?
- 选择策略匹配目标SQL服务器
3 内容交换技术(分片)
原理同上,我们可以根据查询的库或表等等,查询的内容等导向不同的数据库服务器
4 健康探测技术-数据库
当后端有多台服务器时,必须判断后端是否在线正常。对于网站,我们可以检查网页的内容。而对于数据库,我们可以发出任意的SQL语句并且依据返回值判断健康状况,如果值和预期的不符,不会把客户端的请求发送到这台服务器
5.安全性
NetScaler可以做多重策略来控制访问安全并且生成详细日志供性能分析和审计。在请求未传递给后端服务器前提前做出响应动作。
查看SQL性能日志
同时对于前端来说,NetScaler更是性能超高的Web应用防火墙,可以防御SQL注入,防止信息泄漏等等恶意攻击
6.稳定性、性能和扩展性
作为应用交付的领导者,NetScaler一直以高稳定低延迟著称。可以主备部署或者集群部署,配置后便后顾无忧。随着业务的增长使用license释放设备更高的性能或者添加新设备横向扩展!
本文简述了NetScaler对于数据库的相关技术,您可关注微博 @Netscaler_Insight 以及本博客交流探讨。 下篇blog再见!