mysql中间件


mysql proxy,mycat, 都是比较靠谱的中间件软件,不论是用来作读写分离,仍是作分库分表。 mysql

问题是如今有比使用中间件更好的解决方案,这就是运行在公有云上的,基于中间件技术 + 公有云数据库打形成的分布式数据库。 目前典型的有阿里云的DRDS/PetaData,腾讯云的DCDB FOR TDSQL, 以及UCloud最近推出的UDDB。 sql

咱们所说的更好, 首先体如今系统的管理和运维上。云上的,基于中间件的分布式数据库,相对于单纯的中间件来讲, 建立/管理方便、关键指标可视化/自动化告警、复杂运维(如水平扩展中的数据迁移)自动化等功能点,都是节省 DBA 时间的利器,让 DBA 能够专一于业务存储架构和优化,而不用疲于应对平常的系统管理和运维。 数据库

单纯使用中间件软件来作读写分离或分库分表,管理和运维的工做量和复杂度会有多高? 咱们能够举两个例子来看下。 架构

1. 假如你要搭建一个读写分离方案。 那么: 1.1 你要去熟悉一款中间件,了解这款中间件的部署方式,熟悉其配置文件; 1.2 你须要去搭建一个一主多从的数据库集群,配置并测试好好主节点和多个从节点中间的复制关系; 1.3 上面两步完成后,你能够将中间件和数据库集群链接起来了。经过配置好中间件的配置文件, 并设置各节点只读请求的比例,完成系统的组装,同时进行一些测试,保证系统能按照预期进行工做。 运维

但作到这个程度,还远远不够。这样的系统,只是恰好能工做,还远未达到 “工业标准”。好比,还须要去中间件这个单点。所以你须要再增长一个中间件节点,并安装 keepalived 来作 ip 漂移, 保证一个节点后挂掉有另外一个节点继续服务;又好比你还须要设置系统监控和告警,保证系统故障可以及时发现;另外,可能你还须要将一些系统关键指标可视化, 提供给产品或你的boss做为参考。要作到这一点,你须要采集中间件的日志,并写一个程序来作展示。 分布式

而上面全部的操做, 对于公有云上的分布式数据库来讲,是点点鼠标就能够完成的事情。可能在阿里 DRDS 那块, 还须要4-5步的操做,等待5分钟左右; 可是对于 UCloud 的 UDDB 来讲, 只须要一步操做,时间不超过30s。 工具

2. 假如你要搭建一个水平分表方案。那要作的事情就更多了。除了比读写分离更复杂的系统搭建, 还有两个麻烦的事情, 一是建表,二是扩容。 测试

先来看建表。基本上每次建一张表时,你都须要先到每一个数据库节点上,建立好子表,而后修改中间件配置文件并重启,让分表规则生效。优化

而扩容操做,我相信这是全部开发或运维同窗最不肯意干的事情。水平扩容意味着你须要将海量的数据, 从老的数据库节点迁到新增的节点,以匹配新的分表规则,在整个过程必须作到不丢一条数据。风险之高,过程之漫长,相信作过的人都深有体会。对于业务来讲,水平扩容也是不得已而为之的事情,由于水平扩容须要停服。 阿里云

公有云上的分布式数据库, 为建表和扩容提供了极简的解决方案。以UDDB为例,UDDB为用户提供了和MySQL水平分区表语法一致的建表语句, 你只须要经过Mysql客户端发送一条建表语句, 即完成了子表建立+分表规则生效等所有操做; 同时UDDB对系统扩容提供了一键式的解决方案,用户只须要点击一个按钮,便可等待系统扩容操做自动完成,期间系统不停服,只是在扩容期间,每隔一段时间,会有几毫秒到零点几秒的访问中断(同时扩容期间不能处理DDL语句),整个过程可以保证数据的一致性和可靠性。

固然,不论是阿里DRDS,仍是UDDB,都是须要收费的(阿里DRDS 1480/月,UDDB 1200/月,目前公测阶段免费)。但我认为,这个费用值回票价。它会让你摆脱复杂又重复的中间件管理和运维工做,开始思考和解决对业务更为重要和关键的问题,特别是对于创业团队而言。

有可能你已经对中间件的运维了如指掌,积累了一整套方法和工具,横练出一身本领, 以为公有云产品的这套解决方案,无关紧要;也有可能你过去天天都在潜心钻研中间件的运维和源码, 不忍放弃已经投入的许多时间和精力。但我认为,只要公有云产品可以解决你的问题,就应该积极拥抱它。由于中间件技术的发展趋势来看,自动化的管理和运维,程序取代人,是大势所趋。在一个剧烈变化的时代,我们不要作一个手拿锤子,天天只等着敲钉子的人。必然还有不少无可替代,但更关乎团队发展甚至生死的工做;确定还有不少创新性的,能够带来更多价值的技能,值得咱们去发现和探索。而对于人肉作过水平扩展和数据迁移的人来讲,有什么问题是咱们不能拿下的呢。

云上的分布式数据库,比单纯使用中间件更好,其次体如今服务上。任何一个行业的发展,势必致使专业的分工。对于公有云研发团队而言, 可以生存下来的惟一可能,是这个团队可以比客户作的更好,比竞争对手作得更好,而要作到这一点只能是更深刻的钻研和更优质的服务。而从规模效应而言,一个天天负责处理几十家大客户数据库问题的,云计算公司的DBA,和一个天天只负责解决自家公司数据库问题的DBA而言, 其锻炼强度和升级速度是没法比较的。对于中间件的研发和运维也是一样如此。由于接触了广大的客户,由于必需要解决客户的问题,因此必然自身的能力须要也可以不断提升,从而产品成熟度和服务能力也不断提升。总之,一款公有云产品,只要可以活下来并且活好几年,其团队技术能力和服务能力,必然是造诣极深的。

UDDB是基于UCloud的UDB产品构建,本质上只是在UDB上面,增长一款分布式中间件,不少能力,包括存储节点的高可用,读写分离节点组,都是复用UDB的能力。所以,整个产品的稳定性值得信赖。

转载:https://www.zhihu.com/question/31754653/answer/127013070

相关文章
相关标签/搜索