一直以来,MySQL因为开源,诞生了很多扩展方案,类似Amoeba、Atlas、Cobar、MySQLProxy等,大都基于MySQL通信协议来定制解决方案,让我们很羡慕嫉妒,但没办法,Microsoft没有提供类似的方案,但现在,有了SqlServerProxy,为我们带来了曙光,可以基于我们自己的要求来定制。

图1、 SqlServerProxy的基本部署架构

   SqlServerProxy的特性是最大化释放我们掌握的技能,只有根据业务需求定制的,才能够符合我们完美的期望。业务需求定制最关键的部分是请求分发,有的实时性要求高,有的低,一个大统一的解决方案未必能满足。SqlServerProxy有一个特性,提供了基于正则表达式匹配的请求分发实现,只需要修改配置文件,就能轻易满足。除此之外,还有其它一下特性。

   兼容性,对应用程序透明,不需要版本升级就兼容SQL Server 2000 、SQL Server 2005、SQL Server 2008、SQL Server 2008 R2、SQL Server 2012、 SQL Server 2014的所有版本。

   内置命令,能方便查看SqlServerProxy历史、实时、单个客户端的通信量、请求数、事务数等。

   接口定制,默认提供基于正则表达式匹配的接口不够用等原因,可以实现特定接口,将自己的义务逻辑封装进去,最大化提升负载均衡的能力。

   兼容性很容易理解,内置命令是特定的Sql语句,返回SqlServerProxy内部统计信息,例如在SqlServerProxy监听的端口上执行“SELECT vt_active;”将返回下列列表列信息:

   图2、内置查看活动会话的命令

   还提供了一个查看实时流量、请求数的内置命令,这个该是查看负载比较有用的命令。

  图3、查看实时统计的命令

   接口定制,提供了5个可自定义的接口,但最关键的一个是决定请求分发的接口,在SqlServerProxy中,只要引用“Akuma.Contract.dll”程序集,实现里面的“ISlaveProvider”接口,再修改采用“Microsoft.Practices.Unity”注入的配置文件“SqlServerProxy.exe.config”,就能专心的按照业务逻辑来最大化负载均衡能力了。

   详细方面,包括所有可用命令,可以下载SqlServerProxy后查看相关文档。

  不过,SqlServerProxy目前没有内置数据分片的功能,数据分片需要和特定业务相关,估计要特别定制才行(需要的话联系我)。

  还有就是,从图1也可以看出来,SqlServerProxy不做数据同步,数据同步需要依赖数据库复制等技术,但分担了主服务器的压力,应能加快数据同步的速度,达到准实时数据的水平。

  最新版对.NET Framework版本要求降到了.NET 4,现在支持Windows XP和Windows Server 2003了,详见安装文档。

  下载地址:http://www.projky.com/downloads/3a382709-d680-476c-853d-dc3af5c625de/SqlServerProxy.zip

  本文博客地址:http://www.cnblogs.com/ProJKY/p/SqlServerProxy.html    邮箱:projky@126.com 希望大家多指教。

   最近更新:

      SqlServerProxy现在已无日期限制,所有功能全部免费使用。

       发现bug后或者疑问,可以加QQ:1781575586,免费修改及咨询,加Q时,麻烦说明下,否则一律不加。

       另外,从服务器的配置连接密码支持加密,详情请查看《4、实践手册.txt》第7条。

版权归博客园和作者共有。.NET类库源码参考 扣丁格鲁 www.projky.com,转载请注明出处。