欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分布式(ACID 分表分库 CAP理论)

程序员文章站 2022-05-03 17:10:46
...

分布式(ACID 分表分库 CAP理论)

一、 ACID事务应该具有4个属性(ACID特性)

  1. 原⼦性 (Atomicity):银行转账
  2. 一致性 (Consistency):状态一致或者业务逻辑一致 事务前后状态没有发生变化
  3. 隔离性 (Isolation):独立事务,相互独立,相互隔离,互不影响,数据可能相同
  4. 持久性(Durability):持久性是指一个事务一旦被提交了,那么对 数据库中的数据的改变就是永久性的,即便 是在数据库系统遇到故障的情况下也不会丢失提交事务的操作

二、隔离级别

  1. Read Uncommitted(读取未提交内容)
  2. Read Committed(读取提交内容,sql server 和oracle默认隔离级别)
  3. Repeatable Read(可重读,mysql默认隔离级别)
  4. Serializable(可串行化)

a. 脏读:是指一个事务读取了另外一个事务未提交的数据 (一致性不一样)

b. 不可重复读(虚读):原始读取不可重复 ;重复读结果会不一样

c. 幻读:A事务在修改某个范围内的记录的时候,B 事务又在该范围内插入新的记录,当A事务 再次读取该范围记录的时候,会产生幻读。
分布式(ACID 分表分库 CAP理论)默认隔离:
mysql默认的事务处理级别是 ‘REPEATABLE-READ’,也就是可重复读。
SQL Server默认系统事务隔离级别是 READ COMMITTED,也就是都已提交。
oracle数据库默认系统事务隔离级别是 READ COMMITTED,也就是读已提交

三、分库分表:

分库:垂直切分和水平切分

  1. 垂直切分,即将表按照功能模块、关系密切程度划分出来,部 署到不同的库上。
  2. 水平切分,当一个表中的数据量过大时,我们可以把该表的数 据按照某种规则存储到多个不同库上但是结构相同的表里。

情况一:数据库中的 造成海量数据, 并且项目的各项业务逻辑划分清晰、耦合度 低,那么我们使用垂直划分较为合;
情况二:如果数据库中存储的表并不多,但 是单表的数据量很大(海量数据)、或者热度 很高(高并发),我们可以选择水平切分

分布式(ACID 分表分库 CAP理论)分布式(ACID 分表分库 CAP理论)

四、CAP理论

CAP理论,是指在一个互相连接且共享的分布式系统中,当涉及读写操作时,只能保证一致性(Consistence)、可用性 (Availability)、分区容错性(Partition tolerance)三者中的两个,三者不可兼得。 CP AP (分区容错性一定要有)

满足CAP理论才看做是分布式系统,分布式系统首先实现网络互连

  1. 分区容错性(Partition tolerance):大多数分布式系统都分布在多个子网络。每 个子网络就叫做一个区。
    分区容错的意思是:区间通信可能失败
    分布式(ACID 分表分库 CAP理论)
    2. 一致性(Consistence):一致性是指写操作之后的读操作,必须返回该值。
    分布式(ACID 分表分库 CAP理论)3.可用性(Availability): 可用性指只要收到用户的请求,服务器就必须给出回应 。
    不管是哪台分布式结点,只要收到请求,就必 须应答请求,如果不能应答请求,则不满足可用性。

集群:可扩张性,高可用性

为什么一致性和可用性是互斥的?

因为可能通信失败,即分区容错是无法规避的。

分布式(ACID 分表分库 CAP理论)

练习:请简述CAP理论

答:(1)CAP是互相连接和共享的分布式系统
(2)可用性,一致性和分区容错性三者有两者,三者不可兼得
(3)可用性是在接受到用户请求后,服务器必须给出响应,一致性是写操作之后的读操作之后,返回该值,分区容错性是区间通信失败。

相关标签: 分布式