生产环境都使用什么Mysql中间件
{OneProxy是经过他对MySQL Proxy进行修改过的版本,可以透明地支持MySQL分库分表、读写分离、Failover的一个高效的独立的中间件,对应用基本透明,非常适合于企业搭建私有的MySQL RDS集群,很好地解决数据层的可扩展性问题
安装Go语言环境 .
git clone?https //github com/flike/kingshard.git?src/github.com/flike/kingshard
cd src/github.com/flike/kingshard
source ./dev.sh
make
设置配置文件
运行kingshard../bin/kingshard -config=etc/ks.yaml
分布式分表和读写分离的中间件,其实还有一些专注于分布式事务的、数据复制传输的等等,比如fescar,canal、outter等等.
主要功能:
① 读写分离
Altas架构:
端口开启(contos|防火墙)
安装教程
mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差.
其他mysql开源中间件产品有:Atlas,cobar,tddl.你可以查阅一下相关信息和各自的优缺点.
mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差.下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧.
Atlas
以下是一个可以参考的整体架构,LVS前端做负载均衡,两个Altas做HA,防止单点故障.
Altas的一些新特性:
①主库宕机不影响读
主库宕机,Atlas自动将宕机的主库摘除,写操作会失败,读操作不受影响.从库宕机,Atlas自动将宕机的从库摘除,对应用没有影响.在mysql官方的proxy中主库宕机,从库亦不可用.
(1)为了解决读写分离存在写完马上就想读而这时可能存在主从同步延迟的情况,Altas中可以在SQL语句前增加 /*master*/ 就可以将读请求强制发往主库.
主库可设置多项,用逗号分隔,从库可设置多项和权重,达到负载均衡.
(1)需带有分表字段.
这里不得不吐槽Atlas的分表功能,不能实现分布式分表,所有的子表必须在同一台DB的同一个database里且所有的子表必须事先建好,Atlas没有自动建表的功能.
(1)通过配置文件中的pwds参数进行连接Atlas的用户的权限控制.
通过配置文件中设置lvs-ips参数实现平滑重启功能,否则重启Altas的瞬间那些SQL请求都会失败.该参数前面挂接的lvs的物理网卡的ip,注意不是虚ip.平滑重启的条件是至少有两台配置相同的Atlas且挂在lvs之后.
source:
alibaba.cobar
①随着业务的进行数据库的数据量和访问量的剧增,需要对数据进行水平拆分来降低单库的压力,而且需要高效且相对透明的来屏蔽掉水平拆分的细节.
针对以上问题就有了cobar施展自己的空间了,cobar中间件以proxy的形式位于前台应用和实际数据库之间,对前台的开放的接口是mysql通信协议.将前台SQL语句变更并按照数据分布规则转发到合适的后台数据分库,再合并返回结果,模拟单库下的数据库行为.
Cobar应用举例
应用架构:
应用介绍:
cabar优点总结:
①数据和访问从集中式改变为分布:
(1)Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分
(1)Cobar的主备切换有两种触发方式,一种是用户手动触发,一种是Cobar的心跳语句检测到异常后自动触发.那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常.
cobar缺点:
开源版本中数据库只支持mysql,并且不支持读写分离.
TDDL
淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ?_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能.
下图展示了一个简单的分库分表数据查询策略:
主要优点:
①数据库主备和动态切换
①.0.可分析的日志打印,日志流控,动态变更
:建议使用中间件连接,操作数据库的代码更加简单.我们的后台接口就是用的中间件连接.nodejs的设计特点,使得他本身就很快,即使是读写数据库这样耗时的操作.用连接池的目的其实就是想就加快数据库的IO速度.所以呢如果用nodejs,使用普通连接足矣