ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

云技术下的分布式数据库系统

2019-10-23 22:03:27  阅读:194  来源: 互联网

标签:单机 数据库 中间件 技术 业务 UDDB 数据库系统 读写 分布式


https://docs.ucloud.cn/database/uddb/concepts/method

传统单机数据库面临的挑战

以电商网站为例,在网站创建之初,日均访问量可能只有几百到几千人,这时整个业务后台可能就一个数据库,所有业务表都放在这个数据库中,一台普通的服务器就可以支撑,而且这种架构对业务开发人员也非常友好,因为所有的表都在一个库中,这样查询语句就可以灵活关联了,使用起来很便捷。如图1所示,所有业务表都在一个数据库中。

但是随着业务的不断发展,每天访问网站的人越来越多,数据库的压力也越来越大。通过分析发现,所有的访问流量中,80%以上都是读流量,只有20%左右的写流量,这时可以通过读写分离来缓解数据库的访问压力。如图所示为读写分离,

什么是UDDB?

由于网站的访问量越来越大,尽管采取了读写分离的方式,但随着数据库的压力继续增加,数据库的瓶颈越来越突出。这时我们发现,我们的网站演进到现在,交易、商品、用户的数据都还在同一个数据库中。然而在这个巨大而且臃肿的数据库中,表和表之间的数据很多是没有关系的,也不需要JOIN操作,理论上就应该把它们分别放到不同的服务器,如图所示为垂直分库。

随着业务的不断增长,我们发现交易、商品、用户这些库都变得巨大无比,单机数据库已经无法满足业务的继续增长,这时可以考虑对这些表进行水平拆分,即同一个表中的数据拆分到两个甚至多个数据库中。以用户表为例,数据可以根据userid的奇偶来确定数据的划分。把id为奇数的放到DB1,为偶数的放DB2。如下图为水平分表

 

单机MySQL面临的挑战

容量和性能问题

业务存储的数据量增多和访问量增大,都构成对单机数据库的挑战;在大数据时代,传统的单机数据库在容量和性能上,都存在瓶颈,明显不能满足业务发展的要求;

 

成本问题

单机数据库通过Scale-up的方式,采用高端存储和小型机设备,能够一定程度解决容量和性能问题,但带来的问题是成本昂贵,业务成本曲线快速上升。

 

运维风险问题

数据量达到一定量级后,单机数据库的数据库备份、还原等运维操作需要长时间才能完成,失败概率增加,给日常运维工作带来风险。

 

开源中间件解决方案及其存在的问题

读写分离、垂直拆库、水平分表作为大型网站后台的刚需,市面上有很多中间件可以满足,比较有代表性的有:阿里巴巴的Cobar、MyCAT。然而这些开源中间件都存在以下缺点:

 

配置复杂

 

基于开源中间件对一张大表进行水平拆分需要以下六步操作:

部署数据库节点

安装和部署中间件软件(多个)

登录到各数据库节点,创建子表

把子表的信息,配置到每个中间件的配置文件,然后启动

用HAProxy等负载均衡收敛中间件IP,对外提供一个IP

业务正式访问

 

运维极其不便

基于开源中间件对系统进行扩容需要进行以下几步:

 

UCloud 分布式数据库(UCloud Distributed Database,简称UDDB)是基于公有云构建的新一代分布式数据库,为用户提供稳定、可靠、容量和服务能力可弹性伸缩的关系型数据库服务。UDDB 高度兼容 MYSQL 协议和语法,支持自动化水平拆分,在线平滑扩缩容,服务能力线性扩展,透明读写分离,OLTP 和 OLAP 融合支持, 具备数据库全生命周期运维管控能力。

优势:

无限扩容

自动水平拆分;支持字符串,数字,日期等多种拆纬度;业务不中断平滑扩容。

 

弹性扩展

多种规格实例配置;自主升降级,按需扩展;应用透明读写分离,应用零代码改动;平滑扩展,业务不中断。

 

简单易用

兼容MYSQL 协议、语法、客户端;轻松数据导入,数据库上云;一键实现数据库扩容;业务零代码改动,实现读写分离。

 

快速部署

可在线快速部署实例,节省采购、部署、配置等自建数据库工作,缩短项目周期,帮助业务快速上线。

 

低成本

稳定的产品,完善的运维和技术支持,相比开源产品总体性价比更高;多种实例规格配置覆盖不同业务规模场景,按需购买;自主控制实例升降配,根据业务量调整资源使用。

功能:

水平分表

UDDB通过水平分表来解决容量瓶颈问题,根据一列数据的值把数据行拆分到多个独立的表里。对于开发人员来说,不再需要关心如何切分数据、如何路由请求等待,只需初始化分片字段(shardkey),直接面向逻辑库表进行编程、专注业务逻辑的实现即可,大大降低了程序的复杂度。

 

读写分离

UDDB的读写分离功能是一种对应用透明的读写分离实现,应用在不需要修改任何代码的情况下,只需要在UDDB控制台中调整读权重,即可将读流量按照需要的比例在存储节点与只读实例之间调整。写流量则统一走存储节点,不分流。

 

平滑扩容

UDDB支持数据库存储平滑扩缩容,支持一键扩容。

 

弹性扩展

UDDB支持服务节点实时扩展,实现服务能力的线性扩展。

 

SQL兼容

UDDB高度兼容MYSQL协议和语法。

标签:单机,数据库,中间件,技术,业务,UDDB,数据库系统,读写,分布式
来源: https://www.cnblogs.com/qianwangxingfu/p/11729241.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有