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

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


数据库架构演化

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

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

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

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

相关推荐
计算机学姐13 小时前
基于SpringBoot的自习室座位预定系统【预约选座+日期时间段+协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·spring·信息可视化·tomcat
Marktowin13 小时前
控制权限系列之(2)手把手教你使用基于角色的权限控制
后端
仙俊红14 小时前
Spring Cloud 核心组件部署方式速查表
后端·spring·spring cloud
码农幻想梦14 小时前
实验九 Restful和ajax实现
后端·ajax·restful
今天多喝热水14 小时前
SpEL(Spring Expression Language) 表达式
java·后端·spring
码农水水14 小时前
浅谈 MySQL InnoDB 的内存组件
java·开发语言·数据库·后端·mysql·面试
独自破碎E15 小时前
Spring Boot的多环境配置
java·spring boot·后端
Edward-tan15 小时前
【玩转全栈】----Django模板语法、请求与响应
后端·python·django
猫头鹰源码(同名B站)15 小时前
基于django+vue的时尚穿搭社区(商城)(前后端分离)
前端·javascript·vue.js·后端·python·django
Watermelo61715 小时前
随机扣款实现赛博共产主义,《明日方舟:终末地》公测支付事故复盘
数据库·后端·游戏程序·技术美术·用户体验·游戏策划·游戏美术