mysql分布式

时间:2021-07-08 03:43:22

一,复制,对数据进行备份,实现搞可用,提高吞吐量,实现高性能。

  1,主从架构

  2,多主架构

  3,主主从从

  4,主备 (实际用得多)

 

二,分片/分库分表 ()

1,垂直拆分

  1,垂直分表

  2,垂直分库

  如果做垂直分库,应该把有关联的表放在同一个库中,因为数据库的事务不能跨库,不能使用inner join,  order_by ,等链接查询,只能分次数查询,在应用端在合并。

2,水平拆分

  1,水平分表

  2,水平分库分表

  3,分布式id

 需求:水平分表后,需要保证多表id冲突问题

 

 雪花算法:1bit 时间戳41 机器id10 序列号12

 id 取模运算

 

分布式事务

在一个事务不能完成的情况下,

核心:二阶段提交协议(简称2PC协议/XA协议)

问题:会出现事务等待情况,增加死锁的机率

 

基于状态/消息的最终一致性方案(使用较多)

 

 

悲观锁:

  开发者主动设置

乐观锁:

  先不加锁(假设没有并发),但更新前校验数据的一致性,手动代码实现(先查在更新)