微服务知识2

news2024/11/15 8:36:09

CAP和BASE是分布式必备理论基础

CAP理论

一致性(C):写操作之后进行读操作无论在哪个节点都需要返回写操作的值

可用性(A):非故障的节点在合理的时间内返回合理的响应

分区容错性(P):当出现网络分区后,系统能够继续工作,如集群中有台机器出现了问题,但这个集群仍然可以正常工作

BASE理论

BASE:(Basically Available) 基本可用,(Soft state)软状态,(Eventually consistent)最终一致性三个短语的缩写。

BASE理论是CAP中一致性和可用性权衡的结果,其来源于对大规模互联网分布式实践的总结,是基于CAP理论逐步演化而来的。核心思想:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性

2PC 

优点:尽量保证了数据的一致,实现成本较低,在各大主流数据库都有实现

缺点:单点问题:事务管理器在整个流程中扮演的角色很关键, 如其宕机,如在第一阶段已经完成,在第二阶段正准备提交的时候事务管理器宕机,资源管理器就会一直阻塞,导致数据库无法使用

          同步阻塞:在准备就绪之后,资源管理器中的资源一直处于阻塞,直到提交完成,释放资源

          数据不一致:两阶段提交协议虽然为分布式数据强一致性所设计,但仍然存在数据不一致性的可能,如在第二阶段中,假设协调者发出了事务commit通知,但因网络问题该通知仅被一部分参与者收到并执行了commit操作,其余的参与者则因没有收到通知一直处于阻塞状态,产生了数据不一致性

3PC

三段提交是对两段提交的一种升级优化,3PC在2PC的第一阶段和第二阶段中插入一个准备阶段。保证了在最后提交阶段之前,各参与者节点的状态都一致。同时在协调者和参与者中都引入超时机制,当参与者未收到协调者的commit请求后,会对本地事务进行abort,不会一直阻塞等待,解决了2PC的单点故障问题,但仍未从根本上解决数据一致性的问题

CanCommit:协调者向所有参与者发送CanCommit命令,询问是否可以执行事务提交操作。如果全部响应YES则进入下一个阶段

PreCommit:协调者向所有参与者发送PreCommit命令,询问是否可以进行事务的预提交操作,参与者收到PreCommit请求后,如成功的执行了事务操作则返回YES响应,进入最终commit阶段。一单参与者中有向协调者发送了No响应,或因网络造成超时,协调者没有收到参与者的响应则协调者向所有参与者发送abort请求,参与者收到abort命令执行事务中断

DoCommit:在前两个阶段中所有参与者的响应均是YES后,协调者向参与者发送DoCommit命令正式提交事物,如协调者没有接收到参与者发送的ACK响应,则会向所有参与者发送abort请求命令执行事务中断

优点:引入超时机制,解决了事务管理器突然宕机导致资源一直处理阻塞的问题

           多了一次询问阶段,防止个别参与者不正常的情况下,其他参与者都执行了事务,锁定资源

缺点:用超时机制解决同步阻塞问题,但却多了一次网络通信,性能上反而变的更差

           没有解决数据不一致的问题

Seata

Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata提供了AT,TCC,SAGA,XA事务模式,一站式的分布式解决方案

两阶段提交模式

AT模式:提供无侵入自动补偿的事务模式:只需要加上对应的注解就可以开启全局事务

XA模式:支持已实现XA接口的数据库的XA模式:需要数据库实现对应的XA模式的接口,一般mysql,oracle都实现了

TCC模式:在应用层面的2PC,需要编写业务逻辑实现

SAGA模式:为长事务提供有效的解决方案

AT模式两阶段过程

一阶段:开启全局事务,注册分支事务,存储全局锁,业务数据和回滚日志(undoLog)进行提交

二阶段:事务协调者根据所有分支的情况,决定本次全局事务是commit还是Rollback(二阶段是完全异步删除undolog日志,全局事务,分支事务,存储的全局锁)
 

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

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

相关文章

家用平价洗地机哪款好?国产性价比高的品牌

在当今社会,人们使用清洁电器已经非常普及,成为了人们日常清洁中必不可少的得力助手了。洗地机在我看来,它在清洁力度上做的十分优秀,无论是干湿垃圾还是顽固污渍,皆可以清洗到位;同时,洗地机配…

《花雕学AI》AI 人工智能伙伴关系的指南:遵循原则,实现实践,展望未来

引言:人工智能(AI)是指由人造的机器或系统所展现出的智能,它可以模拟或扩展人类的认知功能,如学习、推理、感知、交流等。 人工智能的发展和应用已经深刻地影响了社会、经济、文化和政治等各个领域,同时也带…

( 数组和矩阵) 697. 数组的度 ——【Leetcode每日一题】

❓697. 数组的度 难度:简单 给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。 示例 1: 输…

Java异常处理传递规范总结

java 异常分类 Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常, 这两种异常有很大的区别…

Linux 概述及常用命令(一)

1、Linux 简介 Linux 是一套免费使用和自由传播的类 Unix 操作系统(主要用在服务器上),是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。 目前市面上较知名的发行版有:Ubuntu,RedHat&…

大学生创业者最关心的问题——校园外卖到底能不能盈利?

与前十年的寒窗苦读相比,大学自由散漫的生活略显空虚。除了学习,学生们还有很多时间自由安排。有些人选择颓废,有些人选择勤奋。而校园创业是许多有想法的大学生都会做的事情。其中,外卖跑腿配送是特别受欢迎的创业项目之一。 那…

五月到了,再来看看ChatGPT给我们带来了什么吧!

ChatGPT,即聊天生成预训练转换器(Chat Generative Pre-trained Transformer),是美国OpenAI公司基于GPT-3.5架构(目前已经更新到GPT-4,但仅限于Plus用户)研发和强化训练的一款人工智能聊天机器人…

C++学习day--04 图形化开发环境搭建

1、为什么要搭建图形化开发环境 因为很多初学者学习C就是单纯的控制台打印输出,很枯燥,我们今后在做项目或者在学习的过程中,采用图形化方式相结合的方法学习,再学习中体会编程带来的快乐。先说明一下,奇牛课程是边学…

YOLOv6 4.0 使用记录:python推理 OpenCV DNN 推理

目录 1、下载源码 2、下载权重文件 3、配置环境 4、推理 6、ONNX格式导出 权重文件为yolov6list_s.pt 权重为yolov6.pt 7、opencv DNN推理 8、个人总结 1、下载源码 下载最新的4.0版本的 2、下载权重文件 我下的是YOLOv6Lite-S 3、配置环境 cd到项目目录,运…

关于IDEA编译运行时出现 《非法字符: ‘\ufeff‘ 需要class,interface或enum》的解决办法

问题如下 原因:编码问题解决办法:将这些报错的文件拷贝到一个目录中,然后用notpad打开,点击工具类上的 编码,将 以uft8格式编码 转为 以utf8无BOM格式编码,然后保存,再覆盖idea中对应的文件。或…

人脸识别--传统+深度方法

人脸识别算法--非深度方法 在前深度学习时代,非深度的方法探索了不同的人脸识别算法。 先考虑一下非深度学习时代,人脸识别难在哪?或者说目标识别的难点在哪? 图像是一个高度冗余的数据。 * 图像数据中包含大量与语义无关的内容…

Hadoop3.3.1 Windows环境配置

1.解压hadoop-3.3.1.tar.gz 到windows安装路径 D:\h3\hadoop-3.3.1 2.检查Windows jdk是否安装正常 3.下载winutils GitHub - steveloughran/winutils: Windows binaries for Hadoop versions (built from the git commit ID used for the ASF relase) 解压到D:\h3\ 并重命名…

Python每日一练(20230504) 课程表 Course Schedule I/II

目录 1. 课程表 Course Schedule I 2. 课程表 Course Schedule II 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 课程表 Course Schedule I 你这个学期必须选修 numCourses 门课程&a…

五一劳动节程序员应该知道的知识——计算机

前言 现在AI崛起,计算机已经成为我们不可或缺的一部分,几乎在所有行业和领域都有广泛应用 。 五一已经快要过去了,程序员们应该都放假了,那我们是不是应该去了解了解我们的伙伴——计算机,了去解计算机是怎样工作的&am…

在CSDN逮到一个字节10年老测试开发,聊过之后收益良多···

老话说的好,这人呐,一单在某个领域鲜有敌手了,就会闲得蛋疼。前几天我在上班摸鱼刷CSDN的时候认识了一位字节测试开发大佬,在字节工作了10年,因为本人天赋比较高,平时工作也兢兢业业,现在企业内…

REST API 最佳实践

文章目录 0.什么是 REST API?1.REST API 设计建议1.用名词表示资源2.用复数名词表示集合3.在端点上使用嵌套显示关系4.用 HTTP 方法操作资源5.用过滤、排序和分页请求数据6.用 JSON 作为发送和接收数据的格式7.将实际数据包装在 data 字段中8.非资源请求用动词9.考虑…

搭建环境问题集合(jupyter lab和pycharm)

1、python console找到该项目映射位置在哪里? import os print(os.getcwd()) 2、Linux终端运行命令,Ctrlc & Ctrlz 在Linux中,Ctrl Z组合键可以将当前正在运行的进程暂停,并将该进程放到后台去执行。 linux命令行下Ctrlc的作…

uniapp实现小程序打开相册或拍照上传图片附赠兼容H5方法

文章目录 前言一、支持相册选择和拍照二、删除图片三、效果图存在问题 前言 小程序上传图片,或者拍照上传图片,并附带兼容H5上传图片方法,压缩图片。 一、支持相册选择和拍照 支持选择相册和拍照,可以使用uniapp提供的api&#…

arxiv2022 | MolT5:Translation between Molecules and Natural Language

Ambitious goal !! 任务:molecule captioning and text-guided de novo molecule generation. 论文链接:https://arxiv.org/abs/2204.11817 代码链接:GitHub - blender-nlp/MolT5: Associated Repository for "…

MySQL知识学习03(三大日志详解 binlog、redo log、undo log)

前言 MySQL 日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志 binlog(归档日志)和事务日志 redo log(重做日志)和 undo log(回滚日志&#xf…