分布式(ACID 分表分库 CAP理论)
程序员文章站
2022-05-03 17:10:46
...
一、 ACID事务应该具有4个属性(ACID特性)
- 原⼦性 (Atomicity):银行转账
- 一致性 (Consistency):状态一致或者业务逻辑一致 事务前后状态没有发生变化
- 隔离性 (Isolation):独立事务,相互独立,相互隔离,互不影响,数据可能相同
- 持久性(Durability):持久性是指一个事务一旦被提交了,那么对 数据库中的数据的改变就是永久性的,即便 是在数据库系统遇到故障的情况下也不会丢失提交事务的操作
二、隔离级别
- Read Uncommitted(读取未提交内容)
- Read Committed(读取提交内容,sql server 和oracle默认隔离级别)
- Repeatable Read(可重读,mysql默认隔离级别)
- Serializable(可串行化)
a. 脏读:是指一个事务读取了另外一个事务未提交的数据 (一致性不一样)
b. 不可重复读(虚读):原始读取不可重复 ;重复读结果会不一样
c. 幻读:A事务在修改某个范围内的记录的时候,B 事务又在该范围内插入新的记录,当A事务 再次读取该范围记录的时候,会产生幻读。
默认隔离:
mysql默认的事务处理级别是 ‘REPEATABLE-READ’,也就是可重复读。
SQL Server默认系统事务隔离级别是 READ COMMITTED,也就是都已提交。
oracle数据库默认系统事务隔离级别是 READ COMMITTED,也就是读已提交
三、分库分表:
分库:垂直切分和水平切分
- 垂直切分,即将表按照功能模块、关系密切程度划分出来,部 署到不同的库上。
- 水平切分,当一个表中的数据量过大时,我们可以把该表的数 据按照某种规则存储到多个不同库上但是结构相同的表里。
情况一:数据库中的 造成海量数据, 并且项目的各项业务逻辑划分清晰、耦合度 低,那么我们使用垂直划分较为合;
情况二:如果数据库中存储的表并不多,但 是单表的数据量很大(海量数据)、或者热度 很高(高并发),我们可以选择水平切分
四、CAP理论
CAP理论,是指在一个互相连接且共享的分布式系统中,当涉及读写操作时,只能保证一致性(Consistence)、可用性 (Availability)、分区容错性(Partition tolerance)三者中的两个,三者不可兼得。 CP AP (分区容错性一定要有)
满足CAP理论才看做是分布式系统,分布式系统首先实现网络互连
- 分区容错性(Partition tolerance):大多数分布式系统都分布在多个子网络。每 个子网络就叫做一个区。
分区容错的意思是:区间通信可能失败
2. 一致性(Consistence):一致性是指写操作之后的读操作,必须返回该值。
3.可用性(Availability): 可用性指只要收到用户的请求,服务器就必须给出回应 。
不管是哪台分布式结点,只要收到请求,就必 须应答请求,如果不能应答请求,则不满足可用性。
集群:可扩张性,高可用性
为什么一致性和可用性是互斥的?
因为可能通信失败,即分区容错是无法规避的。
练习:请简述CAP理论
答:(1)CAP是互相连接和共享的分布式系统
(2)可用性,一致性和分区容错性三者有两者,三者不可兼得
(3)可用性是在接受到用户请求后,服务器必须给出响应,一致性是写操作之后的读操作之后,返回该值,分区容错性是区间通信失败。
推荐阅读
-
MySQL分布式数据库架构:分库、分表、排序、分页、分组、实现教程
-
荐 极客大学架构师训练营 系统架构 分布式数据库 数据分片 业务分库 CAP ACID BASE 第11课 听课总结
-
分库分表之后分布式如何保证ID全局唯一性
-
分布式(ACID 分表分库 CAP理论)
-
分库分表之后分布式如何保证ID全局唯一性
-
数据库分库分表中间件 Sharding-JDBC 源码分析 —— 分布式主键
-
分库分表的 9种分布式主键ID 生成方案,挺全乎的
-
荐 极客大学架构师训练营 系统架构 分布式数据库 数据分片 业务分库 CAP ACID BASE 第11课 听课总结
-
MySQL分布式数据库架构:分库、分表、排序、分页、分组、实现教程
-
【转载】分布式分库分表后,ID主键如何处理?