12.MySQL应用架构演变

news/2024/5/4 0:20:44

MySQL应用架构演变

1.总览

  • 单机单库
  • 主从架构
  • 分库分表
  • 云数据库

2.单机单库

介绍

一个简单的小型网站或者应用背后的架构可以非常简单,数据存储只需要一个MySQL Instance就能满足数据读取和写入需求(这里忽略掉了数据备份的实例),处于这个的阶段系统,一般会把所有的信息存到一个MySQL Instance里面

图示

问题

  • 数据量大引起的存储空间不够和性能问题
  • 可用性问题(就一台机器)

3.主从架构

介绍

v2.0架构主要解决v1.0下的高可用和读扩展问题,通过给Instance挂载从库解决读取的压力,主库宕机也可以通过主从切换保证高可用。在MySQL的场景下就是通过主从结构(双主结构也属于特殊的主从),主库抗写压力,通过从库来分担读压力,对于写少读多的应用,v2.0主从架构完全能够升任

图示

问题

  • 无法解决写并发高的问题
  • 数据过多存储不下的问题

4.分库分表

介绍

对于v1.0和v2.0遇到写入瓶颈和存储瓶颈时,可以通过水平拆分来解决,水平拆分和垂直拆分有较大区别,垂直拆分拆完的结果,每一个实例都是拥有全部数据的,而水平拆分之后,任何实例都只有全量的1/n的数据

图示

问题

  • 数据增删改查路由问题(被路由到那个库处理这个请求)
  • 数据拆分问题(数据要怎么被拆分到多个库中)
  • 数据一致性问题(分库分表之后存在分布式事务问题)

5.云数据库

介绍

云数据库(云计算)现在是各大IT公司内部作为节约成本的一个突破口,对于数据存储的MySQL来说,如何让其成为一个saas(Software as a Service)是关键点。MySQL作为一个saas服务,服务提供商负责解决可配置性,可扩展性,多用户存储结构设计等这些疑难问题

图示


http://www.mrgr.cn/p/07415715

相关文章

PTA L2-047 锦标赛

题目 解析 把每一场比赛看作满二叉树的一个节点&#xff0c;父节点递归遍历子节点的结果&#xff0c;进行试填。 代码 #include <bits/stdc.h>using i64 long long;struct Node {int win, lose; };void solve() {int k;std::cin >> k;int siz (1 << k);…

winform之在主窗体中不显示子窗体的菜单栏

在MDi窗体嵌入子窗体后不显示菜单栏 背景: 由于之前做的一个程序的功能全部都是放在一个界面上的,有一个功能能够在数据库查询数据,并返回到界面上,数据量比较小的时候还好,但是数据量多了,导致它阻塞的其他线程,经过一系列讨论之后,决定将一个界面换成一个主界面加多个…

实验一:配置IP地址

1.实验环境 主机A和主机B通过一根网线相连 2.需求描述 为两台主机配置IP地址&#xff0c;验证IP地址是否生效&#xff0c;验证 同一网段的两台主机可以互通&#xff0c;不同网段的主机不能 直接互通 3.推荐步骤 1. 为两台主机配置P地址&#xff0c;主机A为10.0.10.10&#…

从零到一实践:全面掌握微信支付机制、支付退款功能的完整流程以及uniapp支付接口集成配置

微信作为中国乃至全球最大的社交媒体平台之一&#xff0c;拥有数亿活跃用户&#xff0c;其中大部分用户习惯使用微信支付进行日常消费。小程序支付直接对接微信支付系统&#xff0c;使得商家能够触达这一庞大的潜在客户群体。借助微信的高用户粘性和高频使用特性&#xff0c;小…

MATLAB实现禁忌搜索算法优化柔性车间调度fjsp

禁忌搜索算法的流程可以归纳为以下几个步骤&#xff1a; 初始化&#xff1a; 利用贪婪算法或其他局部搜索算法生成一个初始解。清空禁忌表。设置禁忌长度&#xff08;即禁忌表中禁止操作的期限&#xff09;。邻域搜索产生候选解&#xff1a; 通过特定的搜索算子&#xff08;如…

危险场景智能运维巡检系统

在石油、天然气、煤炭和化工等行业&#xff0c;特别是在I/IIC级防爆区场景中&#xff0c;存在着诸如易燃、易爆、高温、有毒有害以及粉尘等危险因素。例如&#xff0c;油气转运站、催化裂化装置、煤化工甲醇车间以及制氢站等地点&#xff0c;都面临着这些潜在的危险。传统的人工…

南昌航空大学-软件学院-23201524-刘子平-JAVA第一次Blog作业

目录前言设计与分析PTA第一次作业PTA第二次作业PTA第三次作业踩坑心得改进建议总结 前言本学期已经学习JAVA一个多月的时间,对比上学期所学习的C语言,JAVA更加方便和更好理解。最开始起步困难,想不出来从何入手JAVA程序,一直用C语言的思路来写JAVA程序,没有领悟到面对“对…

C# 解密m3u8 ts视频文件为mp4

代码:try{//读取的加密视频ts文件路径byte[] encodeBuffer = File.ReadAllBytes("C:\\Users\\admin\\Downloads\\322251.ts");/// A216DF0DA0082028163781ECC258BA5B代表winhex看到的字符串 32734893fb097a767c9ea903936a6d8b代表m3u8文件中的iv偏移byte[] decodeB…

c++-----继承

01&#xff1a;继承是什么 定义 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段&#xff0c;它允许程序员在 保 持原有类特性的基础上进行扩展 &#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承 呈现了面向对象 程序设计…

性能测试——性能测试-linux监控工具-Centos7.x安装Node_exporter

参考小菠萝博客笔记:https://www.cnblogs.com/poloyy/p/12375039.html小菠萝是在一个服务器上面装的,我是2个服务器分别装的,下面需要新增一个命令: useradd prometheusNODE_PATH=/data/prometheus/node_exporter/ cd /usr/local/src/ mkdir -p ${NODE_PATH} wget https://…

软件开发中的“左移”是什么意思?

我曾经有过一个经理,在讨论我们的项目时提到,我们需要尽可能地将我们的工作左移。 几个月后,在一次面试中,面试官问我是否知道“左移”是什么意思。 除非有人没告诉我一个秘密的软件舞蹈,我现在就来告诉你左移是什么意思。 (本文视频讲解:java567.com) 在软件开发中左移…

小鹤双拼 - xhup

可能很多人和以前的我一样只会用 拼音输入法 即使之后想换五笔来提高中文输入的效率也是有心无力 对于已经熟悉拼音的我们来说太难了, 但是双拼就不一样了拼音 我们常用的拼音一般是 \[拼音 = 辅音 + 原音 \]比如我们最常用的 \[ni (你) = n (辅音) + i (原音) \]\[hao (好) = …

Games104 现代游戏引擎3

Sprite Animation 序列帧动画 自由度&#xff08;degrees of freedom&#xff0c;DoF&#xff09;对于刚体而言描述它的运动需要3个位移3个旋转&#xff0c;一共6个自由度 顶点动画&#xff08;per-vertex animation&#xff09;利用网格的顶点来控制运动。此时网格上的每个顶…

Tomcat 启动闪退问题解决方法

总体思路 解决Tomcat闪退问题&#xff0c;您可以尝试以下几种方法&#xff1a; 检查安装过程&#xff1a;确保您的Tomcat安装过程没有遗漏任何步骤。如果是zip包形式的Tomcat&#xff0c;解压后通常不需要额外配置环境变量。编辑启动脚本&#xff1a;打开Tomcat安装目录下的bi…

权威Scrum敏捷开发企业级实训/敏捷开发培训课程

课程简介 Scrum是目前运用最为广泛的敏捷开发方法&#xff0c;是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程&#xff0c;面向研发管理者、项目经理、产品经理、研发团队等&#xff0c;旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…

转载Using Domain-Driven Design(DDD)in Golang

转载自:https://dev.to/stevensunflash/using-domain-driven-design-ddd-in-golang-3ee5 Using Domain-Driven Design(DDD)in Golang #go#ddd#redis#postgresDomain-Driven Design pattern is the talk of the town today.Domain-Driven Design(DDD) is an approach to softwa…

k8s集群部署

Kubernetes-1.28.2 集群介绍及搭建 一、Kubernetes 概述 1、什么是Kubernetes?K8S 的全称为 Kubernetes。用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。 1.23.10 以前(包含)docker 1.24.0 containerd 中间件 k8s 和 docker dockers…

Java 集合进阶使用(List Map Set)

CollectionCollection 是其子集的父类,所以可以使用多态的规矩,比如:创建一个 ArrayList 对象,用 Collection 接收 Collection<Integer> collection = new ArrayList<>();注意:Collection 为接口,不能直接创建对象,但可以利用其子类,使用 Collection 方法,…

什么是 GitHub Wiki 以及如何使用它?

GitHub Wiki 是你项目文档的一个很好的地方。你可以使用 wiki 来创建、管理和托管你的存储库的文档,以便其他人可以使用并为你的项目做出贡献。 GitHub Wiki 很容易开始使用,无需安装任何其他软件。最好的部分是 wiki 与你的 GitHub 存储库集成在一起。 你不需要任何其他工具…

C/C++ C/C++ 入门(6)模板初阶

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 多多指教&#xff01; 一、泛型编程 在之前&#xff0c;我们进行编程的时候&#xff0c;总是针对于某一个具体的问题。就比如说&#xff0c;如何实现一个int类型的swap函数呢&#xff1f;大家肯定会写。…