分布式原理

目录

  • 1. 分布式原理
    • 1.1. 关系型数据库遵循 ACID 规则
    • 1.2. 分布式系统
      • 1.2.1. 分布式计算的优点
      • 1.2.2. 分布式计算的缺点
    • 1.3. CAP 定理 (CAP theorem)
    • 1.4. BASE
    • 1.5. ACID vs BASE

1. 分布式原理

1.1. 关系型数据库遵循 ACID 规则

事务在英文中是 transaction, 和现实世界中的交易很类似, 它有如下四个特性:

  • A (Atomicity) 原子性

原子性很容易理解, 也就是说事务里的所有操作要么全部做完, 要么都不做, 事务成功的条件是事务里的所有操作都成功, 只要有一个操作失败, 整个事务就失败, 需要回滚。

比如银行转账, 从 A 账户转 100 元至 B 账户, 分为两个步骤: 1) 从 A 账户取 100 元; 2) 存入 100 元至 B 账户。这两步要么一起完成, 要么一起不完成, 如果只完成第一步, 第二步失败, 钱会莫名其妙少了 100 元。

  • C (Consistency) 一致性

一致性也比较容易理解, 也就是说数据库要一直处于一致的状态, 事务的运行不会改变数据库原本的一致性约束。

例如现有完整性约束 a+b=10, 如果一个事务改变了 a, 那么必须得改变 b, 使得事务结束后依然满足 a+b=10, 否则事务失败。

  • I (Isolation) 独立性

所谓的独立性是指并发的事务之间不会互相影响, 如果一个事务要访问的数据正在被另外一个事务修改, 只要另外一个事务未提交, 它所访问的数据就不受未提交事务的影响。

比如现在有个交易是从 A 账户转 100 元至 B 账户, 在这个交易还未完成的情况下, 如果此时 B 查询自己的账户, 是看不到新增加的 100 元的。

  • D (Durability) 持久性

持久性是指一旦事务提交后, 它所做的修改将会永久的保存在数据库上, 即使出现宕机也不会丢失。

1.2. 分布式系统

分布式系统 (distributed system) 由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。

分布式系统是建立在网络之上的软件系统。正是因为软件的特性, 所以分布式系统具有高度的内聚性和透明性。

因此, 网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统), 而不是硬件。

分布式系统可以应用在不同的平台上如: PC、工作站、局域网和广域网上等。

1.2.1. 分布式计算的优点

  • 可靠性(容错) :

分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。

  • 可扩展性:

在分布式计算系统可以根据需要增加更多的机器。

  • 资源共享:

共享数据是必不可少的应用, 如银行, 预订系统。

  • 灵活性:

由于该系统是非常灵活的, 它很容易安装, 实施和调试新的服务。

  • 更快的速度:

分布式计算系统可以有多台计算机的计算能力, 使得它比其他系统有更快的处理速度。

  • 开放系统:

由于它是开放的系统, 本地或者远程都可以访问到该服务。

  • 更高的性能:

相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。

1.2.2. 分布式计算的缺点

  • 故障排除:

故障排除和诊断问题。

  • 软件:

更少的软件支持是分布式计算系统的主要缺点。

  • 网络:

网络基础设施的问题, 包括: 传输问题, 高负载, 信息丢失等。

  • 安全性:

开放系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题。

1.3. CAP 定理 (CAP theorem)

在计算机科学中, CAP 定理 (CAP theorem), 又被称作 布鲁尔定理 (Brewer’s theorem), 它指出对于一个分布式计算系统来说, 不可能同时满足以下三点:

  • 一致性 (Consistency) (所有节点在同一时间具有相同的数据)
  • 可用性 (Availability) (保证每个请求不管成功或者失败都有响应)
  • 分区容错性 (Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

CAP 理论的核心是: 一个分布式系统不可能同时很好的满足一致性, 可用性和分区容错性这三个需求, 最多只能同时较好的满足两个。

因此, 根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

  • CA - 单点集群, 满足一致性, 可用性的系统, 通常在可扩展性上不太强大。例如: RDMS。
  • CP - 满足一致性, 分区容忍性的系统, 通常性能不是特别高。例如: MongoDB, HBase, Redis。
  • AP - 满足可用性, 分区容忍性的系统, 通常可能对一致性要求低一些。例如: CouchDB, Cassandra, DynamoDB, Riak。

1.4. BASE

BASE: Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定义。

CAP 理论的核心是: 一个分布式系统不可能同时很好的满足一致性, 可用性和分区容错性这三个需求, 最多只能同时较好的满足两个。

BASE 是 NoSQL 数据库通常对可用性及一致性的弱要求原则:

  • Basically Available --基本可用
  • Soft-state --软状态/柔性事务。 “Soft state” 可以理解为"无连接"的, 而 “Hard state” 是"面向连接"的
  • Eventually Consistency – 最终一致性, 也是 ACID 的最终目的。

1.5. ACID vs BASE

ACIDBASE
原子性(Atomicity)基本可用(Basically Available)
一致性(Consistency)软状态/柔性事务(Soft state)
隔离性(Isolation)最终一致性 (Eventual consistency)
持久性 (Durable)-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/149106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的256天创作纪念日

今天是我成为创作者的第256天纪念日,感谢CSDN官方的纪念信让我铭记这特殊的一天。 机缘 256天前,我怀着满满的好奇和期待,开始了我在CSDN的创作之旅。当时的我,是一个内向的计算机小白,对于写博客这件事还一无所知。…

Windows10 MYSQL Installer 安装(mysql-installer-community-5.7.19.0.msi)

分类 编程技术 1.进入官网找到自己所需的安装包:https://dev.mysql.com/ ,路径:DOWNLOAD-->MYSQL Community Edition(GRL)-->MYSQL on Windows (Installer & Tool) 或直接点击 MySQL :: Download MySQL Installer 查看最新版本。…

uniapp+vue+Springboot 公司网站0~1搭建 前端前期设计篇

原型图 client https://www.xiaopiu.com/h5/byId?typeproject&id653bc791940bbb14e4feeecf admin 客户端 apph5 页面 首页展示 经典用户案例轮播图设计师轮播图 经典用户案例 经典案例搜索详情经典案例详情 设计师查询(待定) 后台管理 ​ …

bhosts 显示节点 “unreach“ 状态

4.1、bhosts简单使用 查看各节点情况,包括状态和正在运行的 Job 情况等 STATUS列展示节点状态 OK:可用——可接受新的作业的正常状态 unavail:不可用 可能原因:主机关闭,LIM和sbatchd不可达 unreach:无法连…

【笔记1-2】Qt系列:QkeyEvent 键盘事件 设定快捷键

参考文献 QKeyEvent 类用来描述一个键盘事件。当键盘按键被按下或者被释放时,键盘事件便会被发送给拥有键盘输人焦点的部件。QKeyEvent 的 key() 函数可以获取具体的按键关键字。需要特别说明的是,回车键在这里是 Qt::Key_Return;键盘上的一…

《LeetCode力扣练习》代码随想录——链表(链表相交---Java)

《LeetCode力扣练习》代码随想录——链表(链表相交—Java) 刷题思路来源于 代码随想录 面试题 02.07. 链表相交 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* …

基于SpringBoot的SSMP整合案例(业务层基础开发与快速开发)

业务层基础开发 接口类public interface BookService {boolean save(Book book);boolean update(Book book);boolean delete(Integer id);Book getById(Integer id);List<Book> getAll();IPage<Book> getByPage(int currentPage,int pageSize);IPage<Book> …

ARTS 打卡第一周

ARTS AlgorithmReviewTipShare Algorithm 题目 class Solution {func mergeAlternately(_ word1: String, _ word2: String) -> String {var ans ""var idx1 word1.startIndexvar inx2 word2.startIndexwhile idx1 < word1.endIndex || idx2 < word2.e…

【随想】每日两题Day.17

题目&#xff1a;232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移…

Linux | C语言中volatile关键字的理解

目录 前言 一、代码引入 二、现象解释 三、具体引用 前言 本章主要讲解介绍volatile关键的作用与使用场合&#xff1b;深刻理解volatile关键字&#xff1b;本文你需要有信号相关的基础知识&#xff1b; Linux | 信号-CSDN博客 一、代码引入 首先&#xff0c;我们来查看下面…

upgrade k8s (by quqi99)

作者&#xff1a;张华 发表于&#xff1a;2023-11-17 版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99) 本文只是从网上搜索一些升级k8s的理论学习&#xff0c;下面的步骤未实际测…

基于C#实现最长公共子序列

一、作用 最长公共子序列的问题常用于解决字符串的相似度&#xff0c;是一个非常实用的算法&#xff0c;作为码农&#xff0c;此算法是我们的必备基本功。 二、概念 举个例子&#xff0c;cnblogs 这个字符串中子序列有多少个呢&#xff1f;很显然有 27 个&#xff0c;比如其…

分发糖果(贪心算法)

题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并返回…

(二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数据集二、导入数据以及展示部分1.导入数据集以及对数据集进行处理2.展示数据&#xff08;看看就好&#xff09; 三&#xff08;1&#xff09;、搭建网络进…

004 OpenCV akaze特征点检测匹配

目录 一、环境 二、akaze特征点算法 2.1、基本原理 2.2、实现过程 2.3、实际应用 2.4、优点与不足 三、代码 3.1、数据准备 3.2、完整代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、akaze特征点算法 特征点检测算法…

【数字图像处理】Gamma 变换

在数字图像处理中&#xff0c;Gamma 变换是一种重要的灰度变换方法&#xff0c;可以用于图像增强与 Gamma 校正。本文主要介绍数字图像 Gamma 变换的基本原理&#xff0c;并记录在紫光同创 PGL22G FPGA 平台的布署与实现过程。 目录 1. Gamma 变换原理 2. FPGA 布署与实现 2…

JSP 四大域对象

我们来说说JSP的四大域对象 首先 我们要了解他们是四种保存范围 第一种 是 Page范围 只作用于当前界面 只要页面跳转了 其他页面就拿不到了 第二种 request范围 在一次请求中有效 就是 我们服务端指向某个界面 并传递数据给他 那么 如果你是客户端跳转就不生效了 第三种 sessi…

经典ctf ping题目详解 青少年CTF-WEB-PingMe02

题目环境&#xff1a; 根据题目名称可知 这是一道CTF-WEB方向常考的知识点&#xff1a;ping地址 随便ping一个地址查看接受的数据包?ip0.0.0.0 有回显数据&#xff0c;尝试列出目录文件 堆叠命令使用’;作为命令之间的连接符&#xff0c;当上一个命令完成后&#xff0c;继续执…

深度学习二维码识别 计算机竞赛

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…

windows中运行项目中.sh和kaggle安装与配置

在git bash中运行 命令如下&#xff1a; bash download_data.sh 或者 ./download_data.sh如果使用kaggle的数据集&#xff0c;会要求输入用户名和API。 API在这个文件里面&#xff0c;复制过来即可。 安装kaggle pip install kaggle去kaggle官网&#xff0c;点击这里&…