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

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


数据库架构演化

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

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

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

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

相关推荐
梅梅绵绵冰24 分钟前
springboot初步2
java·spring boot·后端
0和1的舞者2 小时前
公共类的注意事项详细讲解
经验分享·后端·开发·知识·总结
小北方城市网2 小时前
Spring Cloud Gateway 自定义过滤器深度实战:业务埋点、参数校验与响应改写
运维·jvm·数据库·spring boot·后端·mysql
jason.zeng@15022072 小时前
POM构造Spring boot多模块项目
java·spring boot·后端
猿与禅2 小时前
Spring Boot 3.x 集成 Caffeine 缓存框架官方指南
spring boot·后端·缓存·caffeine
虾说羊2 小时前
Springboot中配置欢迎页的方式
java·spring boot·后端
漫漫求2 小时前
Go的panic、defer、recover的关系
开发语言·后端·golang
qq_12498707532 小时前
基于Spring Boot的长春美食推荐管理系统的设计与实现(源码+论文+部署+安装)
java·前端·spring boot·后端·毕业设计·美食·计算机毕业设计
Tony Bai2 小时前
2025 Go 官方调查解读:91% 满意度背后的隐忧与 AI 时代的“双刃剑”
开发语言·后端·golang
懈尘3 小时前
基于Spring Boot与LangChain4j的AI驱动新闻系统设计与工程实现
java·大数据·人工智能·spring boot·后端·langchain