架构设计(二):数据库复制

架构设计,数据库,复制 · 浏览次数 : 455

小编点评

**架构设计(二):数据库复制** **数据库类型选择:** - 主/从模式适用于大数据量、高可用的场景。 **主数据库:** - 只支持写操作。 **从数据库:** - 支持读操作。 **主从模式的优势:** - 性能提升:写操作集中在主节点,而读操作分布在从节点上。 - 可靠性:如果一个数据库服务器被自然灾害摧毁,数据仍然被复制到其他服务器上。 - 高可用性:即使一个数据库脱机,网站仍然可以运行,因为你可以访问存储在另一个数据库服务器的数据。 **架构图:** ```mermaid graph LR A[主数据库] --> B[从数据库] B --> C[读操作执行节点] C --> D[写入操作执行节点] ``` **其他关键点:** - 所有修改数据的命令(插入、删除或更新)必须发送到主数据库。 - 大多数应用要求的读和写的比例要高得多,因此从属数据库的数量通常比主数据库的数量多。 - 主从模式存在某个数据库服务挂了的情况,但可用从数据库可用于读取操作。

正文

架构设计(二):数据库复制

作者:Grey

原文地址:

博客园:架构设计(二):数据库复制

CSDN:架构设计(二):数据库复制

架构设计(一):从单服务器模式到负载均衡设计中提到了数据库类型的选择,

针对大数据量,高可用的场景,数据库复制是一种比较好的方式,其中多个数据库实例之间可以是主/从关系。

主数据库通常只支持写操作。从数据库从主数据库获得数据的副本,只支持读操作。所有修改数据的命令,如插入、删除或更新,必须发送到主数据库。大多数
应用要求的读和写的比例要高得多;因此,系统中的从属数据库的数量通常比主数据库的数量多。以下是主/从数据库架构的示例图。

img

以上架构的优势是

  • 更好的性能。在主从模式中,所有的写和更新都发生在主节点;而读操作则分布在从节点上。这种模式提高了性能,因为它允许更多的查询被并行处理。

  • 可靠性。如果你的一个数据库服务器被自然灾害摧毁,数据仍然被保存下来。不需要担心数据丢失,因为数据是在多个地点复制的。

  • 高可用性。通过在不同地点复制数据,即使一个数据库脱机,网站仍然可以运行,因为你可以访问存储在另一个数据库服务器的数据。

以上架构中,存在某个数据库服务挂了的情况,有如下两种情况

  • 某个从数据库挂了,这个时候,如果是还有其他从数据库可用的情况下,读取操作将被重定向到其他健康的从数据库,但是如果挂掉的是唯一的一个从数据库的话,读操作会被暂时引导到主数据库。

  • 某个主数据库挂了,那么一个从数据库将被提升为新的主数据库。所有的数据库操作将暂时在新的主数据库上执行。

结合架构设计(一):从单服务器模式到负载均衡设计中的架构图,增加数据库复制内容以后,整个系统架构设计如下

img

参考资料

System Design Interview

与架构设计(二):数据库复制相似的内容:

架构设计(二):数据库复制

架构设计(二):数据库复制 作者:Grey 原文地址: 博客园:架构设计(二):数据库复制 CSDN:架构设计(二):数据库复制 在架构设计(一):从单服务器模式到负载均衡设计中提到了数据库类型的选择, 针对大数据量,高可用的场景,数据库复制是一种比较好的方式,其中多个数据库实例之间可以是主/从关系

向量数据库技术全景

本文深入探讨了向量数据库的基础概念、架构设计及实现技术,详细介绍了HNSW、FAISS和Milvus等关键算法和工具,旨在为高效管理和检索高维向量数据提供全面的技术指南。 关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,复旦机

架构设计(九):估算

架构设计(九):估算 作者:Grey 原文地址: 博客园:架构设计(九):估算 CSDN:架构设计(九):估算 估算在系统设计中非常重要,这决定了你的设计是否可以满足要求,要实现比较靠谱的估算,就需要对如下几个概念熟练掌握 第一个概念:二的幂 尽管在处理分布式系统时,数据量可能是巨大的,但计算都可以

架构设计(八):数据库的水平扩展和垂直扩展

架构设计(八):数据库的水平扩展和垂直扩展 作者:Grey 原文地址: 博客园:架构设计(八):数据库的水平扩展和垂直扩展 CSDN:架构设计(八):数据库的水平扩展和垂直扩展 数据库的扩展有两种方法:垂直扩展和水平扩展。 垂直扩展是通过提高现有机器的硬件配置(CPU、硬盘、内存等)来进行扩展。比如

Hbase学习二:Hbase数据特点和架构特点

转载请注明出处: 1.Hbase数据特点 大:一个表可以有上亿行,上百万列。 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表

稳,从数据库连接池 testOnBorrow 看架构设计

本文从 Commons DBCP testOnBorrow 的作用机制着手,管中窥豹,从一点去分析数据库连接池获取的过程以及架构分层设计。以下内容会按照每层的作用,贯穿分析整个调用流程。

架构设计(五):有状态服务和无状态服务

架构设计(五):有状态服务和无状态服务 作者:Grey 原文地址: 博客园:架构设计(五):有状态服务和无状态服务 CSDN:架构设计(五):有状态服务和无状态服务 无状态的服务 在横向扩展服务的过程中,将状态(例如用户会话数据)从服务中移出并将会话数据存储在持久性存储介质中,如关系型数据库或 No

[转帖]玄铁C910微架构学习(11)——缓存系统的数据预取技术

玄铁C910微架构学习(11)——缓存系统的数据预取技术 https://zhuanlan.zhihu.com/p/487605742 一、源码中的数据预取部分的文件结构 二、全局预取模式 2.1产生步幅的整体控制逻辑 2.2 步幅的计算 2.3 步幅的检查 2.4 监视步幅,动态调整预取的开始和停

Pytorch DistributedDataParallel(DDP)教程二:快速入门实践篇

一、简要回顾DDP 在上一篇文章中,简单介绍了Pytorch分布式训练的一些基础原理和基本概念。简要回顾如下: 1,DDP采用Ring-All-Reduce架构,其核心思想为:所有的GPU设备安排在一个逻辑环中,每个GPU应该有一个左邻和一个右邻,设备从它的左邻居接收数据,并将数据汇总后发送给右邻。

京东APP百亿级商品与车关系数据检索实践

本文主要讲解了京东百亿级商品车型适配数据存储结构设计以及怎样实现适配接口的高性能查询。通过京东百亿级数据缓存架构设计实践案例,简单剖析了jimdb的位图(bitmap)函数和lua脚本应用在高性能场景。希望通过本文,读者可以对缓存的内部结构知识有一定了解,并且能够以最小的内存使用代价将位图(bitmap)灵活应用到各个高性能实际场景。