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

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


数据库架构演化

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

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

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

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

相关推荐
王码码20355 小时前
Go语言的测试:从单元测试到集成测试
后端·golang·go·接口
王码码20355 小时前
Go语言中的测试:从单元测试到集成测试
后端·golang·go·接口
嵌入式×边缘AI:打怪升级日志6 小时前
使用JsonRPC实现前后台
前端·后端
小码哥_常7 小时前
从0到1:Spring Boot 中WebSocket实战揭秘,开启实时通信新时代
后端
lolo大魔王7 小时前
Go语言的异常处理
开发语言·后端·golang
IT_陈寒9 小时前
Python多进程共享变量那个坑,我差点没爬出来
前端·人工智能·后端
码事漫谈9 小时前
2026软考高级·系统架构设计师备考指南
后端
AI茶水间管理员10 小时前
如何让LLM稳定输出 JSON 格式结果?
前端·人工智能·后端
其实是白羊11 小时前
我用 Vibe Coding 搓了一个 IDEA 插件,复制URI 再也不用手动拼了
后端·intellij idea
用户83562907805111 小时前
Python 操作 Word 文档节与页面设置
后端·python