PHP中的数据存储 MySQL架构 (下)

年关将至,工作上也没什么大的安排。闲暇时间从一个PHP工程师的角度去学习一下微服务架构,毕竟谁都想进步嘛,哇哈哈


数据库架构演化

下面再来看一下上边这张图,上边这张图,和前面那张图其实是一样的,他把其他的部分做了一些简化,把 MySQL 这部分详细的说明了一下,比如说主从,它是通过 binlog 来复制的,这里 MySQL 通过设置不同权限的用户,来实现读写的分离,比如说主 MySQL,只设置具有写权限的用户,而从 MySQL 只设置具有读权限的用户,而代码层呢,它通过配置数据库,这些不同权限的用户,来实现读写分离,它对业务代码其实是不友好的,不过现在很多框架呢,都已经支持了这样的配置,开发者在写 sql 时,其实不用考虑使用哪一个配置的。

再来看一下上边这张图,上边这张图在之前的基础上,它其实是加了中间件,它主要实现读写分离和主从复制的,它的目的其实透明化读写分离所带来的影响,让使用方尽量像使用一个数据库一样,使用主从数据库集群,这就是它主要的设计目标。大家看这边,有了它之后呢,业务代码,就不用再关心,后边这一堆的 MySQL 机器了,他只需要对接中间键就可以了。那么这个架构有什么问题呢,来看一下,当数据量太大时,一台服务器还是承受不了,因为主从之间是复制的,他们上面的数据都是一样的,所以当数据量太大时,他们还是解决不了这个问题,还是承受不了,另外一个是当写操作太大时,写服务器容易出现瓶颈,那么怎么解决这个问题呢,就有了 3.0 的架构。

同样的随着业务的更进一步发展呢,当一个表,或者一个库中的数据量比较大,也就是第一个问题,那么就需要分库分表了,也就是3.0版本架构,分库分表,它有垂直拆分和水平拆分,把它们拆分为几个部分,每个部分,再进行读写分离,逐层复制,架构图最终就演变成这样,它可以满足大部分的需求,

再看一下后边这张图,它其实和前面是一样的,只不过换了种画法,这张图的架构呢,就是互联网主流的MySQL集群架构,和前面那张图的区别也一样,也是引入了中间件,看最右边,服务器已经很多了,这个时候呢,引入中间件,就可以避免分库分表,和主层复制带来的一些问题,当然呢点比较少的话,也可以不用中间键,由代码层来兼容就可以了,右边先通过分库分表分出来好多分片,每个分片内又做了主层复制,读写分离,它可以轻松的满足十几亿的数据量,并且当其中一个点出现问题的时候,也可以切换到其他的点,这样这个架构就满足高性能高并发,高可用的需求了,关于MySQL集群的架构就讲到这里。

相关推荐
希望永不加班44 分钟前
SpringBoot 整合 Redis 缓存
spring boot·redis·后端·缓存·wpf
cch89181 小时前
易语言VS Go语言:编程语言大对决
开发语言·后端·golang
EmbeddedCore1 小时前
基于 MQTT+JSON 的物联网网关物模型通讯协议(极致精简・缩写版)
java·后端·struts
lifewange2 小时前
Ruby语言在测试领域的应用
开发语言·后端·ruby
披着羊皮不是狼2 小时前
从零搭建 Spring Boot 3 + 本地大模型 (Ollama) 的 AI 开发环境
人工智能·spring boot·后端
xnkyn2 小时前
frp内网穿透https访问本地服务,frpee客户端https教程
前端·后端·网络协议·http·https
妙蛙种子3112 小时前
【Java设计模式 | 创建者模式】单例模式
java·开发语言·后端·单例模式·设计模式
种时光的人2 小时前
Spring AI 工具调用(ToolCalling)完整使用教程
java·人工智能·后端·spring·ai·java开发·spring ai
uElY ITER4 小时前
Spring全家桶简介
java·后端·spring
lay_liu10 小时前
springboot 文件下载
java·spring boot·后端