ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## [MYSQL分布式设计](https://liangshan.blog.csdn.net/article/details/109636733) > 一: 复制: > 1:复制作用: 对数据进行备份,提高**高可用**。高可用原因是主服务器挂了,从服务器还可以使用, 通过读写分离,提高吞吐量,实现**高性能**。 > 2:复制的原理 > 2.1:mysql主服务器会将写操作,写入自己的二进制日志文件中。 > 2.2:mysql的从服务器的IO线程会连接mysql主服务器,请求读取主服务器的二进制日志指定内容。 > 2.3:mysql的主服务器的IO线程将二进制内容读取到,复制给mysql从服务器的IO线程。 > 2.4:mysql的从服务器的IO线程将收到的日志,写入自己的中继日志中。 > 2.5:mysql的从服务器的SQL线程执行中继日志的mysql语句 > 3:常用架构: > * 3.1、主从架构----一主多从,读写分离,提高吞吐量。缺点:主库单点,从库高可用,主库一旦挂掉,无法写入操作。 > * 3.2、主备架构—多主库,互相数据备份。单裤读写,性能一般。高可用,一旦主库挂掉,就启用备库。(阿里云,美团) > 4:实现读写分离 > 4.1: 研究sqlalchemy官方文档: > 4.2:我们的flask_sqlalchemy是如何做的呢? > 4.3:实现读写分离: > 4.4: 项目中实现读写分离: > 二:分片: > 2.1:垂直拆分: > 2.2:垂直分库: > 2.3:如何分库访问? > 2.4:水平拆分: > 2.5:如何定向查询? > 2.6: 水平分表以上操作仍然存在的问题: > 三:分布式事务问题: > 方案一:二阶段提交: > 方案二:状态消息的一致性方案: > 四:分布式Join/分页/排序问题: ## **分布式与集群** > 分布式与集群是不一样的,简单说,**分布式**是以**缩短单个任务的执行时间**来提升效率的,而**集群则是通过提高单位时间内执行的任务数**来提升效率。 > > 如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时。 > > 采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。 > > 而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作,10小后,10个任务同时完成,这样,整体来看,还是1小时内完成一个任务。 > > ![](https://img.kancloud.cn/77/ef/77ef7cd642a00017203dfc0bf6a63a71_600x285.png) > > > > **扩展资料** > > 分布式系统可以分为机体内系统、建筑物内系统、建筑物间系统和不同地理范围的区域系统等,它们的耦合度依次由高到低按应用领域的性质决定耦合度,可以分成三类: > > 一、是面向计算任务的分布并行计算机系统和分布式多用户计算机系统,它们要求尽可能高的耦合度,以便发展成为能分担大型计算机和分时计算机系统所完成的工作。 > > 二、是面向管理信息的分布式数据处理系统。耦合度可以适当降低。 > > 三、是面向过程控制的分布式计算机控制系统。耦合度要求适中,当然对于某些实时应用,其耦合度的要求可能很高。 > ## [分布式MySQL架构](https://blog.csdn.net/gonghaiyu/article/details/120831497) ## [分布式MySQL优缺点\_什么叫分布式数据库,有什么优点和缺点](https://blog.csdn.net/weixin_27070451/article/details/113685207) ## [分布式事务的七种解决方案](https://blog.csdn.net/m0_67322837/article/details/124499950)