一为什么要做分布式数据库架构改造?
云计算大数据时代,传统的数据库架构已经无法支撑企业高容量的数据增长,满足高并发的业务需求 。对企业数据库进行分布式架构设计,打破了数据库资源不够用的天花板的同时,还能根据企业业务发展状况,随时平滑扩容 。
二分布式数据库架构改造,如何做?
数据库分布式改造要遵循“循序渐进”的拆分原则
拆分方式有垂直拆分和水平拆分两种,选择拆分方式要根据企业自身业务发展需要 。
文章插图
一般来说,是先做垂直拆分,再做水平拆分 。
在单一数据节点无法满足业务和用户增长需求的情况下,需要做一个服务化,对业务进行垂直梳理,后面的数据节点可以放在不同的资源节点上,以提高数据服务的整体性能 。
比如一个App的业务数据,在业务初期阶段,是全部放在一个数据库节点中,在业务量和数据量快速增长的中期阶段,需要进行垂直梳理,根据业务逻辑,拆分成商品、交易、用户,并分别放在不同的数据库 。
如果其中的一个服务已经拆的很细了,但还是有性能瓶颈,无法支撑我们的业务增长,数据库这块才需要再做水平拆分 。
水平拆分就是将数据(比如图中APP的交易数据)拆成多片,放到不同的资源上,用一个集群来支撑更高的业务增长 。
在拆分时,要谨慎,因为拆分会引入复杂性,能不做就不做,最优先是做业务和架构上的优化,最终才是做数据库拆分 。
在拆分的过程中,不要做过度的设计,或者直接从初级跳到高级,这样做其实非常浪费资源,投入产出比也不好 。
三水平拆分的难点及解决方案
对企业数据库进行分布式改造,需要理解客户的业务逻辑、丰富的拆分经验积累 。尤其是水平拆分,有系统复杂度高、技术挑战性强、稳定性控制难、具有一定局限性四大难点 。
针对这些问题,宏翊给我们提供了两种解决方案 。
1.客户端实现数据路由
此方案不会引入额外的组件,架构上比较轻量,简单场景使用尚可,但稍复杂的场景会放大它的劣势,比如配置管理复杂等 。
文章插图
2.数据库中间件
中间件的使用最大限度地屏蔽了分布式数据库所引入的复杂性,极大降低了研发的门槛 。最重要的是,有了数据库中间件,应用看到的还是单一的数据库 。
文章插图
四水平切分原理及设计原则
要对一个表做拆分,选择一个拆分字段,通过一个路由算法确定数据存放在哪个底层库 。
文章插图
比如下列数据选择MEMBE_ID作为拆分键,通过路由算法计算后得出’test1234‘相关的数据应该落在库1上,DRDS会把所有MEMBE_ID=‘test1234’相关的请求全都路由到库1 。其他数据请求亦落到相应的底层库 。
接下来,当数据已经放下去了,应该如何去查询、访问和变更?
比如要查询一条记录,member_id=‘test1234’
【浅谈数据库分布式架构设计】它怎么去执行的呢?
首先计算一个hash值,当值等于某一个值,它会知道这个数据存储在哪一个库上,所以会直接路由到底层这个库,从这个库查询,返回结果 。
中间件扮演的就是这个路由和计算的角色,性能非常强大 。拆分后,各底层数据库数据量比较小,查询返回比较快;二是可以支持更高的并发,整体并发基本等于两个底层数据库实例并发之和 。
文章插图
五来自阿里云的数据库中间件产品:DRDS
数据库中间件产品中,有平民软件OneProxy等商业软件;也有MyCat等开源产品,宏翊为大家则介绍了一款广泛使用的成熟商业产品DRDS,并讲解了DRDS如何解决对数据库进行拆分时遇到的难点 。
DRDS,英文名Distributed Relational Database Service
是阿里巴巴自主研发致力于解决单机数据库服务瓶颈问题而推出的分布式数据库产品 。DRDS 高度兼容 MySQL 协议和语法、支持自动化水平拆分、平滑扩容、弹性扩展、透明读写分离、分布式事务、具备分布式数据库全生命周期的运维管控能力 。DRDS前身为淘宝TDDL,是近千核心应用首选组件,已稳定服务8年以上 。
推荐阅读
- MySQL数据库架构和同步复制流程
- 一份来自蚂蚁金服大佬的数据库设计总结,纯干货,值得收藏
- 一篇文章搞定Python连接mysql数据库模块PyMySQL
- 分布式监控CAT服务端的本地部署
- 浅谈交通事故中的法律责任
- 分布式存储协议或加速边缘计算技术演进
- 美团MySQL数据库巡检系统的设计与应用
- LVS+Keepalived+Nginx高可用分布式集群
- 黑客泄露了暗网网络托管提供商DH的数据库
- 在 Linux 上检查 MySQL/MariaDB 数据库正常运行时间的三种方法