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

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


数据库架构演化

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

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

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

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

相关推荐
Undoom1 分钟前
腾讯云 Lighthouse MCP 的实战全解
后端
0wioiw01 小时前
Nodejs(④GraphQL)
后端·graphql
王同学 学出来1 小时前
跟做springboot尚品甄选项目(二)
java·spring boot·后端
bobz9651 小时前
Calico 项目功能分析:聚焦转发面
后端
bobz9651 小时前
tcp 状态机
后端
阿杆2 小时前
文心快码 3.5S 发布!实测插件开发,Architect 模式令人惊艳
前端·后端·文心快码
文心快码BaiduComate2 小时前
我用Comate搭建「公园找搭子」神器,再也不孤单啦~
前端·后端·微信小程序
计算机毕业设计指导2 小时前
基于Spring Boot + Vue 3的社区养老系统设计与实现
vue.js·spring boot·后端
拾忆,想起2 小时前
Redisson 分布式锁的实现原理
java·开发语言·分布式·后端·性能优化·wpf
几颗流星2 小时前
Rust 常用语法速记 - 解构赋值
后端·rust