`
骑猪逛街666
  • 浏览: 144520 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数据库分布式架构巧设计_水平拆分不再难

阅读更多
阅读原文请点击:http://click.aliyun.com/m/23435/
摘要: 在阿里云生态日,袋鼠云首席数据库架构师赵晓宏分享了《高容量大并发数据库服务——数据库分布式架构设计》。他从分布式需求、拆分原则、拆分难点及解决方案、数据库规范设计、运维相关五个方面进行了分享。在分享中,他主要介绍了水平拆分的原则以及解决方案,分享了DRDS的架构与实践。

在阿里云生态日,袋鼠云首席数据库架构师赵晓宏分享了《高容量大并发数据库服务——数据库分布式架构设计》。他从分布式需求、拆分原则、拆分难点及解决方案、数据库规范设计、运维相关五个方面进行了分享。在分享中,他主要介绍了水平拆分的原则以及解决方案,分享了DRDS的架构与实践。



以下内容根据直播视频整理而成。



分布式需求
为什么要做分布式?首先是因为高并发,分布式应用带来更大量的数据库请求;高容量,业务增长,产生大量在线数据,关系型数据库要支持业务就要支持大数据量的存储;资源向上扩展存在天花板,无法做到无限制的纵向扩展;支撑业务高速发展,平滑扩容。

拆分原则
051b421049878add9a7e33b37e6148ace02858ca

上图是数据库改造的进阶。业务初期,客户量比较少,可能在一个实例上把所有的服务、数据都能存放下来并且支持业务的发展。当客户量和数据量变大时,数据库很容易成为一个瓶颈,怎么去做改造?建议先做服务化的改造,不同的业务模块做一个垂直的梳理,不同服务的数据库相互隔离,中间的交互由业务去实现,这样数据库就可以分布在不同的实例上,并且可以支持相对较高的并发和容量。再往上发展时,单实例依然是一个瓶颈,此时要考虑做一个水平的拆分,把一个服务的数据分布在不同的实例上。拆分需要循序渐进,先垂直后水平,防止过度设计,紧密结合业务及应用架构设计。

拆分难点及解决方案
水平拆分难点
首先是系统复杂度增大,系统架构设计需要彻底的重构;技术挑战,应用需要处理复杂的分布式逻辑;稳定性挑战;分布式的局限性,不支持跨库join、分布式事务、全局sequence等。

解决方案:客户端实现数据路由
825db0289a9d5aad234f3c55321eae1f3c48052d

该方案的优点是不需要引入中间件,直接在客户端配置,程序把控力强,简单场景方便使用。缺点是对代码侵入性强,因为代码端要去管理路由;配置管理复杂,如果配置错误,数据可能完全乱掉,修复也会比较复杂。

解决方案:数据库中间件
b53e3666f239a0fc291edc0163b6f65b6dc52825

使用中间件可以实现自动的分库分表,对应用透明,使用类似于单实例;使用门槛低,应用只需要考虑分布式事务,跨库join,而不用考虑数据的路由;方便水平扩容。使用了中间件之后,应用看到的还是单实例数据库,不需要考虑分布式的情况,对开发来说是比较有优势的。

水平切分原理及设计原则
3146548d78dd526e230b1d3c5226d130382ba703

数据库拆分都是用字段hash把数据分配到不同的底层库。选择的原则是拆分尽量均匀并且一次查询尽量落到单实例库上,这样能够更快的返回,而且有更大的并发。那么,中间件怎么实现数据库的分布式?如上图所示,选择了MEMBE_ID字段,将字段值做一个hash分类到不同库中。比如发出查询test1234的请求,就会直接转到库1里。

数据访问——SQL转发

阅读原文请点击:http://click.aliyun.com/m/23435/
分享到:
评论

相关推荐

    银行业中的分布式数据库架构转型.pdf

    其次是分布式数据库的水平拆分,即每个微服务拥有独立的数据库存储。这种拆分方式对于数据库存储提出了新的挑战,因为随着微服务的容器数量增加,数据库的存储与处理能力需要同步提升,否则数据库将成为整个架构中的...

    大型分布式网站架构设计与实践.rar

    总的来说,《大型分布式网站架构设计与实践》是一本全面解析分布式系统设计的宝典,它不仅介绍了各种核心技术,还分享了实际项目中的经验教训,对于想要提升分布式架构设计能力的IT从业者来说,具有极高的参考价值。...

    基于Mycat中间件分布式数据库架构及企业实践

    分布式数据库架构是将单一的数据库系统拆分为多个独立的数据节点,每个节点负责一部分数据的存储和处理。通过负载均衡和数据分片策略,使得数据库系统的整体性能和可扩展性得到提升。Mycat作为中间件,负责协调这些...

    分布式架构面试题汇总.zip

    分布式架构是现代软件系统设计的核心概念,特别是在大数据处理、云计算以及高并发应用场景中。这份"分布式架构面试题汇总.zip"包含的资源很可能是为准备分布式系统相关面试的求职者提供的。接下来,我们将深入探讨...

    金融行业分布式架构数据库运维转型.docx

    【金融行业分布式架构数据库运维转型】 随着金融行业的快速发展和互联网技术的不断革新,传统的集中式架构逐渐无法满足日益增长的业务需求,特别是在处理大规模数据和提供高可用性方面。因此,金融行业开始转向...

    大型分布式网站架构设计与实践.带目录书签.完整版.pdf

    这本书详细介绍了分布式架构的核心概念、设计原则和实践经验,旨在帮助读者掌握构建大型分布式网站所需的关键技术。 分布式网站架构设计的核心目标是提高系统的可用性、可伸缩性和容错性。在这一过程中,以下几个...

    spring分布式架构学习PPT

    Spring分布式架构是基于Spring框架的微服务架构,它将传统的单体架构拆分成多个微服务,每个微服务都是独立的,可以单独开发、测试、部署和维护。这种架构方式可以提高系统的灵活性、可扩展性和可维护性。 注册中心...

    分布式架构设计概要总结.pdf

    1. 增大系统容量:通过业务的水平拆分或垂直拆分,将系统分解为多个独立的服务,形成分布式架构,以处理更大的业务量。 2. 保证服务高可用:采用节点冗余,消除单点故障,确保每个业务线都有备份,提高系统的整体...

    分布式架构设计概要总结.docx

    - **增大系统容量**:通过分而治之,拆分业务系统,实现水平或垂直扩展,构建分布式架构。 - **保证高可用**:确保每个业务线无单点故障,通过节点冗余消除单点,提高系统整体可用性。 在分布式系统中,有一些关键...

    分布式数据库架构及企业实践-基于Mycat中间件.zip

    分布式数据库架构在现代企业IT系统中扮演着至关重要的角色,特别是在大数据时代,单机数据库已经无法满足高并发、海量数据的处理需求。本资料“分布式数据库架构及企业实践-基于Mycat中间件”深入探讨了如何利用...

    分布式数据库系统管理与设计实验报告

    分布式数据库是一种将数据分布在不同地理位置的多个数据库实例上的架构,它允许用户通过单一接口访问和操作分散的数据,从而提供数据分布透明性、逻辑整体性和高可用性。 实验的目标在于理解分布式数据库的构成、...

    分布式数据库架构及企业实践-基于Mycat中间件 + 官网入门

    Mycat是一款开源的Java实现的数据库中间件,它支持SQL协议,能够将单一数据库拆分为多个数据库实例,实现数据的水平扩展。Mycat的主要功能包括: 1. 数据分片:根据预设规则,将数据分散到不同的数据库实例,降低...

    MySQL分布式数据库架构及企业实践-基于Mycat中间件

    - **分库分表**:当单个数据库无法承载大量数据时,可以利用Mycat进行水平拆分(即分表),或者垂直拆分(即分库)。 #### 四、Mycat配置与实践 1. **环境搭建** - 首先需要安装好MySQL数据库,并确保服务正常...

    分布式数据库架构及企业实践 基于Mycat中间件 mysql分布式

    数据分片是将大表拆分成小块,分别存储在不同的数据库服务器上,这样可以降低单个数据库的压力,提高查询速度。读写分离则是将读操作和写操作分配到不同的服务器,以减轻主库的压力,提升读取性能。而负载均衡则是在...

    【Hadoop与大数据38】构建生态化分布式数据库架构体系(陶勇)

    ### 构建生态化分布式数据库架构体系 #### 关键词: - MySQL协议 - Schema垂直拆分 - Table水平拆分 - 实时日志解析 - 事务顺序 - 实时镜像 - 双向同步 - 同步事务支持 - GlobalID - GlobalFailover #### 分布式...

    《大型分布式网站架构设计与实践》

    《大型分布式网站架构设计与实践》是一本深入探讨如何构建和优化大规模分布式系统的权威书籍。在互联网技术高速发展的今天,大型分布式网站已经成为支撑各种在线业务的核心。本书详细阐述了从概念到实施,从理论到...

    中国数据库技术大会数据库架构设计专场PPT资料.rar

    7. **微服务架构下的数据库设计**:探讨在微服务架构中,如何进行数据库的拆分和治理,避免数据孤岛和数据一致性问题。 8. **实时与大数据处理**:介绍流处理技术(如Apache Flink、Kafka)和批处理工具(如Hadoop...

    陈吉平:高可用分布式数据库系统架构实践

    ### 高可用分布式数据库系统架构实践 #### 一、引言 随着互联网技术的迅猛发展,数据量呈爆炸性增长,传统的单体数据库系统已经难以满足大规模应用的需求。因此,构建高可用、高性能的分布式数据库系统成为了现代...

Global site tag (gtag.js) - Google Analytics