你们好,我今天想跟你们分享的是Sharding-Sphere的第二个产品Sharding-Proxy。前端
在上个月亮相的Sharding-Sphere 3.0.0.M1中首次发布了Sharding-Proxy,但愿此次分享可以经过几个优化实践,帮助你们管中窥豹,从几个关键细节想象出Sharding-Proxy的全貌。至于更详细的MySQL协议、IO模型、Netty等议题,之后有机会再和你们专题分享。数据库
1、Sharding-Proxy简介后端
1Sharding-Proxy概览架构
Sharding-Proxy定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。目前先提供MySQL版本,它能够使用任何兼容MySQL协议的访问客户端操做数据(如:MySQLCommandClient、MySQLWorkbench等),对DBA更加友好。框架
对应用程序彻底透明,可直接当作MySQL使用;ide
适用于任何兼容MySQL协议的客户端。优化
与其余两个产品(Sharding-JDBC、Sharding-Sidecar)的对比:3d
它们既能够独立使用,也能够相互配合,以不一样的架构模型、不一样的切入点,实现相同的功能目标。而其核心功能,如数据分片、读写分离、柔性事务等,都是同一套实现代码。代理
举个例子,对于仅使用Java为开发技术栈的场景,Sharding-JDBC对各类Java的ORM框架支持度很是高,开发人员能够很是便利地将数据分片能力引入到现有的系统中,并将其部署至线上环境运行,而DBA就能够经过部署一个Sharding-Proxy实例,对数据进行查询和管理。blog
2Sharding-Proxy架构
整个架构能够分为前端、后端和核心组件三部分来看: