数据库高可用架构对于我们这些应用端开发的人来说是一个比较陌生的领域,是在具体的数据库产品之上搭建的环境,需要像DBA这样对数据库产品有足够的了解才能有所涉及,虽然不能深入其中,但可以通过一些经典的高可用架构学习其中的思想。就我所了解到的有以下几种:
- MySQL Replication
- MySQL Cluster
- Oracle RAC
- IBM HACMP
- Oracle ASM
MySQL Replication
MySQL Replication就是通过异步复制多个copy以达到提高可用性的目的,常规的复制架构有以下几种:
- Master-Slaves
- Master-Master
- Master-Master-Salves
1)Master-Slaves
Master-Slaves是最常用的提高可用的方法,特别是在互联网应用中,读远远大于写,因此提高读的可用性是首当其中的,Master- Slaves就是让写的操作集中在一台数据库Master上,然后这个Master会把更新的操作复制到其他数据库Slaves上,读的操作都发生在 Slaves上,架构图如下所示:
如上图在SlaveC不可用时,读和写都不会中断,等SlaveC恢复后会自动同步丢失的数据,又能重新投入运转,可维护性非常好。但如果 Master有问题就麻烦了,因此它只解决了读的高可用性,但不保证写的高可用性。关于Master-Slaves的实战可参考以前的一篇博文构建高性能web之路------mysql读写分离实战
2)Master-Master
为解决上面谈的写的高可用性,MySQL提供了Master-Master的复制架构,如下所示:
一般说来都向MasterA写,MasterA同步数据到MasterB,当MasterA有问题时,会自动切换到MasterB,等MasterA恢复时,MasterB同步数据到MasterA
3)Master-Master-Salves
Master-Master-Salves是结合上面两种方案,是一种同时提供读和写高可用的复制架构,如下图所示:
MySQL Cluster
MySQL Cluster主要由三个部分组成:
- SQL服务器节点
- NDB数据存储节点
- 监控和管理节点
三个部门的组成结构如下图所示:
这样的分层也是由MySQL本身把SQL处理和存储分开的架构相关系的,关于MySQL的架构可见以前的博文设计与开发应用服务器(一)------常见模式
这样一来MySQL Cluster就可以分别在SQL处理和存储两个层次上做高可用的复制策略。在SQL处理层次上,比较容易做集群,因为这些SQL处理是无状态性的,完全 可以通过增加机器的方式增强可用性。在存储层次上,通过对每个节点进行备份的形式增加存储的可用性,这类似与MySQL Replication,结构图如下所示:
Oracle RAC
Oracle RAC和MySQL Cluster有些相似,但主要集中在SQL处理层的高可用性,而在存储上体现不多,结构图如下所示:
它的主要优点就是对应用透明,并且通过Heartbeat检测可用性非常高,主要缺点就是存储是共享的,存储上可扩展能力不足。
IBM HACMP
IBM HACMP与Oracle RAC也是类似,主要用于双机互备,运行流程如下所示:
1)作为双机系统的两台服务器(主机A和B)同时运行在Hacmp环境中;
2)服务器除正常运行自机的应用外,同时又作为对方的备份主机;
3)两台主机系统(A和B)在整个运行过程中,通过 “心跳线”相互监测对方的运行情况(包括系统的软硬件运行、网络通讯和应用运行情况等);
4)一旦发现对方主机的运行不正常(出故障)时,故障机上的应用就会立即停止运行,本机(故障机的备份机)就会立即在自己的机器上启动故障机上的应用,把故障机的应用及其资源(包括用到的IP地址和磁盘空间等)接管过来,使故障机上的应用在本机继续运行;
5)应用和资源的接管过程由Ha软件自动完成,无需人工干预;
6)当两台主机正常工作时,也可以根据需要将其中一台机上的应用人为切换到另一台机(备份机)上运行。
Oracle ASM
Oracle ASM主要提供存储的可扩展性,通过自动化的存储管理加上后端可扩展性的存储阵列达到高可用性,结构图如下所示:
因此,可以尝试把Oracle RAC和ASM组合起来使用,同时提供SQL处理和存储的高可用性,这也是MySQL Cluster想达到的效果
相关推荐
为了满足金融行业对数据处理的高要求,分布式数据库技术得到了快速发展和广泛的应用。分布式数据库系统是基于分布式计算环境的一种数据库系统,它将数据分散存储在不同的节点上,通过网络相互连接和通信。数据库中的...
2. 高可用性:分布式数据库可以提供高可用性,避免单点故障。 3. 高扩展性:分布式数据库可以满足高扩展性的需求,满足大规模数据存储和处理的需求。 4. 高并发性:分布式数据库可以提供高并发性,满足高并发访问和...
### 高可用分布式架构设计与实践-内训方案 #### 第一课:知识原理篇 - **什么是架构的高可用** 架构的高可用性是指在系统发生故障时,能够保证业务不受影响或者影响最小化的能力。具体而言,高可用性的目标是...
分布式设计与开发是现代软件系统中的关键组成部分,特别是在高可用性、高并发和大规模数据处理的场景下。本篇将探讨几种必须了解的分布式算法,这些算法是解决分布式环境中一致性问题的基础。 ### Paxos算法 #### ...
总的来说,分布式旅行预订系统利用分布式数据库技术实现了高可用、可扩展和数据一致性的目标,为用户提供顺畅的预订体验。Java作为开发语言,提供了强大的支持,使得系统设计和实施变得更加便捷。通过对数据的智能分...
#### 五、分布式架构的设计原则 1. **模块化**:确保每个服务具有单一职责。 2. **无状态服务**:尽可能减少服务之间的依赖,提高可扩展性。 3. **API网关**:统一管理对外接口,简化客户端调用过程。 4. **异步...
数据库分布式高可用架构是当前数据库系统设计中的一个重要方向,主要目的是为了保证在各种故障情况下,数据库系统依然能够提供稳定的服务,同时提升系统的处理能力和扩展性。本文将详细探讨几种流行的数据库分布式高...
分布式数据库架构在现代企业中扮演着至关重要的角色,它能够解决单体数据库在高并发、大数据量场景下的性能瓶颈和扩展性问题。Mycat作为一款开源的分布式数据库中间件,已经成为众多企业和开发者构建分布式数据库...
除了分布式数据库,还有其他非集中式数据库系统,如云计算环境中的分布式数据库、NoSQL数据库等,它们同样利用分布式架构来处理大规模数据,但具体实现方式和应用场景有所不同。 6. 分布式数据库的目录系统 分布式...
分布式数据库是计算机科学中的一个重要领域,它涉及到如何在多个计算机节点上存储和管理大量数据,以实现高可用性、可扩展性和性能优化。东北大学的这门课程显然旨在教授学生如何设计、实施和管理这样的系统。提供的...
分布式数据库架构在现代企业中扮演着至关重要的角色,尤其是在大数据量和高并发的场景下,传统的单体数据库往往无法满足需求。Mycat作为一款开源的数据库中间件,旨在解决这些问题,提供了一种灵活且高效的分布式...
综上所述,分布式数据库架构及企业实践基于Mycat中间件,涉及到的内容广泛,包括数据库架构设计、中间件选型、数据分片策略、事务管理、性能优化等多个方面,对于理解和实施大规模分布式数据库系统具有重要的指导...
分布式数据库架构在现代企业中扮演着至关重要的角色,尤其是在大数据时代,传统的单体数据库往往无法满足高并发、海量数据处理的需求。"分布式数据库架构及企业实践-基于Mycat中间件"这一主题深入探讨了如何利用...
在现代企业级应用中,随着数据量的急剧增长,单机数据库系统已无法满足高并发、大数据量的处理需求,分布式数据库架构应运而生。Mycat作为一款开源的分布式数据库中间件,为解决这一问题提供了有效方案。本文将深入...
分布式数据库架构是一种先进的数据存储和管理技术,其目的是为了适应信息化时代对数据存储技术的高要求。在传统数据库架构中,数据集中存储在单一服务器上,这不仅会导致数据访问速度慢,而且在系统出现故障时,会...
分布式数据库设计与实现是当前大数据时代的关键技术之一,它涉及到如何在多个计算机节点上分散存储和处理数据,以实现高可用性、可扩展性和性能优化。在这个主题中,我们将深入探讨分布式数据库的核心概念、设计原则...
5. **分布式数据库**:介绍分布式数据库的架构,包括分片、复制和分布式事务管理,以及NoSQL和NewSQL数据库的概念。 6. **负载均衡**:讨论如何有效地分配任务和请求,以优化系统性能,避免单点故障。 7. **容错与...
分布式数据库作为一种现代数据库技术,其核心特点在于支持数据的分布式存储与管理,相较于集中式数据库在处理能力、可靠性、可用性、扩展性等方面具备显著优势。以下是对分布式数据库发展路径研究中涉及的关键知识点...
分布式数据库架构在现代企业级应用中扮演着至关重要的角色,特别是在大数据、高并发场景下,传统的单体数据库已经无法满足需求。Mycat作为一个开源的分布式数据库中间件,为企业提供了有效的解决方案。本篇将深入...