首页 > 其他分享 >【分布式架构】分布式数据存储

【分布式架构】分布式数据存储

时间:2024-10-13 21:48:23浏览次数:8  
标签:存储 分库 架构 1.1 分区 节点 分布式

一、写在前面

从这篇文章你可以学习到分布式架构中常见的数据存储架构模式以及Mysql的常见架构模式
原创不易,如果对您有帮助麻烦点赞+关注 谢谢~

二、分布式存储架构模式

单体
主备
主从(读写分离)
分区(分库分表)
存储架构一般都是上面4个,单体和主备没有讨论的必要,实现比较简单,这里主要讨论主从和分区

三、主从(读写分离)

1. 理论

1.1. 架构设计

在这里插入图片描述

1.2. 数据复制(一致性)

同步复制
在这里插入图片描述

异步复制
在这里插入图片描述

异步复制会存在一致性的问题,可以选择同步复制或者指定主节点读取

1.3. 选举机制

选举算法有Raft,Zab,这里只讨论Raft

  1. 初始状态
    集群刚启动,所有节点处于初始化阶段
  2. 选举过程
    ● 每个阶段升级成候选者
    ● 节点之间相互投票
    ● 获得半数以上的节点升级主节点(如果得票数一样,重新选举)
  3. 健康检测
    主节点定期向从节点发送心跳请求,如果因为网络问题或者主节点挂掉,从节点没有收到心跳请求,从节点升级候选者,进行新一轮的投票

2. Mysql实践

在这里插入图片描述

  1. 读写分离通过Mycat的sql解析器实现
  2. 同步操作是异步化的,通过io线程把binlog的增量数据同步到从库
  3. 选举机制并不是用raft算法,如果主节点挂掉了,随机选择一个节点作为主节点

四、分区(分库分表)

分库分表分为垂直和水平,垂直是按照业务为维度拆分多个数据库,但是仍然会存在单表数据量过大的问题,这里只讨论水平的架构设计

1. 理论

1.1. 架构设计

在这里插入图片描述

1.2. 数据复制(一致性)

如上1.1.2

1.3. 选举机制

如上1.1.3

1.4. 分区策略

  1. 范围分区
  2. hash分区
    ● hash取模:算法简单,但是后期扩容需要迁移旧数据
    ● 一致性hash:可以避免扩容带来的旧数据迁移问题

2. Mysql实践

在这里插入图片描述

  1. 分库分表带来的问题
    ● 事务问题:数据存储在不同的数据库没办法通过acid保证数据一致性,可以考虑用分布式事务组件seata
    ● left join问题:可以在表中冗余字段,也可以在业务系统封装
    ● 主键id:普通自增主键会有冲突,uuid占用空间多,一般采用雪花id(时间戳+机器id+序列号);由于时间戳是在高位,整体是递增趋势
    ● 排序/函数等问题:如果排序的字段是非分区字段,需要在业务系统中封装
    在这里插入图片描述

标签:存储,分库,架构,1.1,分区,节点,分布式
From: https://blog.csdn.net/weixin_43918863/article/details/142902221

相关文章

  • 电子电气架构---汽车OEM敏捷式集成方案简介
    我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。无......
  • Java语言中1.方法调用栈 2.栈帧 3.局部变量表 4.操作数栈 5.动态链接 6.方法的入参存
    在Java语言中,理解方法调用栈、栈帧、局部变量表、操作数栈等概念非常重要,它们与方法的执行和内存管理密切相关。下面是对这些概念的详细解释及它们之间的关系:1.方法调用栈(MethodCallStack)方法调用栈是每个线程维护的一块内存区域,用于存储线程执行时的栈帧(每个栈帧对应一次......
  • 《深入理解分布式事务与Seata解决方案》
    分布式事务-重要1.数据库的事务1、事务概念事务是一个完整的,不可分割操作单元。整个事务要么全部执行成功,要么全部执行失败。事务具备4个特性:ACIDA:原子性【】C:一致性【数据的一致性:事务开始前和事务结束后,数据总量不变】I:隔离性【事务相互隔离,互不影响】D:持久性【事务一......
  • 什么是分布式事务?使用Seata有哪些解决方案?Seata的AT模式的执行流程
    什么是分布式事务?简单来说:在分布式系统中出现的事务问题,称为分布式事务。为什么会出现分布式事务:一个分布式事务流程图在这个业务中有3个数据库连接,就没有办法做到全局的事务控制。这就是分布式事务问题分布式事务产生的情况有两种:​ 1.业务跨多个服务实现​ 2.业务跨多......
  • CSV、XML、JSON三种形式进行存储并读取
    下面是一个完整的Python示例代码,它可以生成简单的算式(加法、减法、乘法、除法),并将生成的算式和习题长期保存到CSV、XML和JSON三种格式中。代码包括生成算式的功能,以及将数据保存和读取的功能。1.代码实现pythonimportcsvimportjsonimportxml.etree.ElementTreeas......
  • 【汇编语言】第三章----寄存器(内存访问)(一)—— 内存中字的存储
    文章目录前言1.内存中字的存储2.问题3.问题分析与解答4.结论结语前言......
  • 如何从零开始搭建自己的博客(基于flask架构)
    互联网是一片浩瀚的汪洋,但是我已经有了属于自己的岛屿1.前置资源:1.物色好一个令自己满意的服务器(系统选择Ubuntu20.04)2.准备好一个域名(访问ip+端口也可行,但是丑且不安全)3.能够在本地正常运行的项目2.搭建1.不借助宝塔页面笔者一开始是直接用Finalshell连接服务器搭建的......
  • 理解微服务架构
    在当今的软件架构领域,微服务架构正逐渐成为主流。它为企业提供了一种灵活、可扩展且易于维护的架构方式,以应对不断变化的业务需求和技术挑战。那么,究竟什么是微服务架构呢?让我们一起来深入理解。一、微服务架构的定义微服务架构是一种将单个应用程序拆分为一组小型服务的架构风格......
  • RMI分布式通信及其应用
    分布式系统实验一RMI分布式通信及其应用实验名称:RMI分布式通信及其应用实验要求:利用RMI通讯机制,完成一个分布式通讯应用。实验学时:2学时。实验内容:设计一个基于JavaRMI通讯机制的在线拍卖系统。系统客户端(买家)通过服务器(拍卖中心)出价竞拍商品,实现客户端和服务器之间的交互......
  • MySQL 基础架构
    MySQL基础架构:一条SQL查询语句如何执行连接器(管理连接、权限验证)查询缓存(5.7不推荐使用,8.0完全废弃)解析器(解析树)优化器(索引选择、表关联顺序、执行计划)执行器(调用存储引擎接口)执行引擎(InnoDB、MyISAM、Memory)MySQL分成Server层和存储引擎层两部分。连接器mysql-h<ip......