分布式理論和事務

微服務和分布式

  • 微服務 是一種軟件架構風格,它將應用程序拆分成一系列小型、獨立的服務,每個服務專注于單一功能,彼此通過輕量級通信機制(如 API)進行交互。微服務通常是松耦合的,可以獨立開發、部署和擴展。

  • 分布式系統 是指一組獨立的計算機(或節點)通過網絡協同工作,共同完成任務。這些節點沒有共享內存,依靠消息傳遞來通信。分布式系統的目標通常是提高性能、可靠性或容錯能力。

  • 微服務但非分布式:一個電商系統被拆分為“訂單服務”和“支付服務”,但它們都運行在同一臺服務器上。

  • 分布式但非微服務:一個單體應用部署在多臺服務器上,通過負載均衡分擔流量。

  • 微服務+分布式:一個電商系統的“訂單服務”運行在服務器 A 上,“支付服務”運行在服務器 B 上,它們通過 API 通信。

CAP

在這里插入圖片描述

Base理論

BASE 理論本質上是 CAP 定理中 AP 的一種實踐指導原則,告訴開發者如何通過基本可用、軟狀態和最終一致性來應對分區和故障

示例一

  • 場景:系統包括訂單服務、庫存服務、支付服務,用 Nacos 作為注冊中心。訂單服務下單時需要調用庫存服務扣減庫存。
  • 網絡分區發生:庫存服務的 3 個實例(A、B、C)中,C 與 A、B 網絡斷開(分區)。
  • AP 選擇(基于 BASE)
    • 基本可用:訂單服務繼續接受用戶下單請求(保證 A)。如果庫存服務 C 不可用,訂單服務調用 A 或 B,或者降級(記錄訂單,稍后扣庫存)。
    • 軟狀態:分區期間,實例 C 的庫存數據未更新(顯示 100 件),A 和 B 已扣到 90 件。
    • 最終一致性:分區恢復后,系統通過消息隊列(比如 Kafka)或日志重放,將 C 的庫存同步到 90 件。

示例二

在這里插入圖片描述
在這里插入圖片描述

分布式事務

在這里插入圖片描述

XA模式

在這里插入圖片描述

AT模式

在這里插入圖片描述

TCC模式

在這里插入圖片描述
需要自己寫代碼完成邏輯

MQ分布式事務

在這里插入圖片描述

接口冪等性

冪等性是一個數學概念,用在接口上:用在接口上就可以理解為:同一個接口,多次發出同一個請求,請求的結果是一致的

在系統的運行中,可能會出現這樣的問題:

  • 用戶在填寫某些form表單時,保存按鈕不小心快速點了兩次,表中竟然產生了兩條重復的數據,只是 id 不一樣。
  • 開發人員在項目中為了解決接口超時問題,通常會引入了重試機制。第一次請求接口超時了,請求方沒能及時獲取返回結果(此時有可能已經成功了),于是會對該請求重試幾次,這樣也會產生重復的數據。
  • mq 消費者在讀取消息時,有時候會讀取到重復消息,也會產生重復的數據。

方案一

請求接口之前,需要先獲取一個唯一的 token,再帶著這個 token 去完成業務操作,服務端根據這個 token 是否存在,來判斷是否是重復的請求。
在這里插入圖片描述

方案二

直接在數據庫上加鎖的做法性能不夠友好,可以使用分布式鎖的方式,目前最流行的分布式鎖實現是通過 Redis,具體實現一般都是使用 Redission 框架。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78439.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78439.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78439.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA:紅黑樹應用的技術指南

🌳 1、簡述 紅黑樹是一種自平衡二叉查找樹(Self-Balancing Binary Search Tree),被廣泛應用于操作系統調度、Java集合、數據庫索引等核心模塊中。本文將從 基本原理 入手,結合 實際應用場景與代碼實例,帶你…

【Pandas】pandas DataFrame rfloordiv

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于執行 DataFrame 與另一個對象(如 DataFrame、Series 或標量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于執行 DataFrame 與另一個對象&…

【數據可視化-26】基于人口統計與社會經濟數據的多維度可視化分析

?? 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN人工智能領域的優質創作者,提供AI相關的技術咨詢、項目開發和個…

WinForm真入門(18)——DateTimePicker?控件解析

一、基本概念? ?DateTimePicker? 是 Windows 窗體中用于選擇日期和時間的控件,支持以下交互方式: 通過下拉日歷選擇日期通過上下按鈕調整時間直接輸入日期或時間 適用于需要規范日期格式、限制日期范圍或快速輸入的場景(如預約系統、數據…

AVFormatContext 再分析

說明 :將 avfromatContext 的變量依次打印分析,根據ffmpeg 給的說明,猜測,結合網上的文章字節寫測試代碼分析。 從常用到不常用依次分析 1. unsigned int nb_streams; 代表 avfromatContext 中 AVStream **streams 的個數 /** …

計算機網絡-運輸層(1)

計算機網絡-運輸層(1) 文章目錄 計算機網絡-運輸層(1)5.1 運輸層概述5.2 運輸層端口號、復用與分用端口號基本概念端口號特性端口號分類重要說明 5.3 UDP與TCP協議對比關鍵區別說明 5.1 運輸層概述 計算機網絡體系結構中的物理層、數據鏈路層以及網絡層共同解決了主機通過異構…

2025 FIC wp

這次比賽計算機和手機大部分題目都比較常規 第一和第四部分有點讓人摸不著頭腦 比賽的時候第一部分有四個題沒出 第四部分基本都沒怎么出 現在復盤一下 把我當時做題的心得和獲取的新知識記錄一下 互聯網取證的部分就先學習一下別的師傅 檢材 鏈接:https://pan.bai…

【大數據技術-聯邦集群RBF】DFSRouter日志一直打印修改Membership為EXPIRED狀態的日志分析

生產環境遇到下面報錯 2025-04-23 17:44:15,780 INFO store.CachedRecordStore (CachedRecordStore.java:overrideExpiredRecords(192)) - Override State Store record MembershipState: router1:8888->hh-fed-sub25:nn2:nn2:8020-EXPIRED 2025-04-23 17:44:15,781 INFO …

【HarmonyOS 5】鴻蒙檢測系統完整性

【HarmonyOS 5】鴻蒙檢測系統完整性 一、前言 從現實安全威脅來看,設備系統完整性風險已影響至移動應用的各個場景。不少用戶因使用越獄設備(Jailbreak)或非真實設備(Emulator),導致應用安全防護機制失效…

學習spark-streaming收獲

1.流處理的核心概念 ?實時 vs微批處理:理解了 Spark Streaming 的微批處理(Micro-Batch)模型,將流數據切分為小批次(如1秒間隔)進行處理,與真正的流處理(如Flink)的區…

Redis一些小記錄

Redis一些小記錄 SpringData Redis:RedisTemplate配置與數據操作 操作String類型數據 String是Redis中最基本的數據類型,可以存儲字符串、整數或浮點數。RedisTemplate提供了ValueOperations接口來操作String類型的數據,支持設置值、獲取值、…

5G融合消息PaaS項目深度解析 - Java架構師面試實戰

5G融合消息PaaS項目深度解析 - Java架構師面試實戰 場景:互聯網大廠Java求職者面試,面試官針對5G融合消息PaaS項目進行提問。 第一輪提問 面試官:馬架構,請簡要介紹5G融合消息PaaS平臺的核心功能和應用場景。 馬架構&#xff…

【C語言極簡自學筆記】C 語言數組詳解:一維數組與二維數組

在 C 語言中,數組是一種非常重要的數據結構,它可以將多個相同類型的元素組織在一起,以便于我們進行批量處理和操作。本文將詳細介紹 C 語言中的一維數組和二維數組,包括它們的定義、初始化、元素訪問以及內存存儲等方面的內容。 …

04.通過OpenAPI-Swagger規范讓Dify玩轉Agent

dify安裝 cd dify cd docker cp .env.example .env docker compose up -d準備自定義工具 我自建的PowerDNS,它的swagger如下: https://github.com/PowerDNS/pdns/blob/master/docs/http-api/swagger/authoritative-api-swagger.yaml 但需要加上&#x…

汽車產業鏈主表及類別表設計

(提前設計,備用) 一、汽車產業鏈類別表(industry_chain_category) 設計要點 1、核心字段:定義產業鏈分類(如零部件、整車制造、銷售服務等) 2、主鍵約束:自增ID作為唯一標…

?RISC-V架構的低功耗MCU多電壓域優化設計

RISC-V核低功耗MCU的多電壓域設計是一種優化電源管理以降低功耗的技術方案。該設計通過電源域劃分、電壓轉換和時序管理等手段,有效降低了系統功耗并提升能效,適用于物聯網和嵌入式系統等場景。 多電壓域設計的基本原理是將芯片劃分為多個獨立供電區域&…

基于STM32、HAL庫的AD7616BSTZ模數轉換器ADC驅動程序設計

一、簡介: AD7616BSTZ是Analog Devices公司生產的一款16位、雙通道、同步采樣SAR型ADC芯片,主要特點包括: 16位分辨率 雙通道同步采樣 最高采樣率:1MSPS/通道 輸入范圍:10V, 5V或2.5V(軟件可編程) 串行(SPI)和并行接口選項 低功耗:典型值100mW 工作溫度范圍:-40C至+8…

CUDA Stream 回調函數示例代碼

文章目錄 CUDA Stream 回調函數示例代碼基本概念示例代碼代碼解釋回調函數的特點更復雜的示例:多個回調注意事項 CUDA Stream 回調函數中使用 MPI 或 NCCL示例程序注意事項 CUDA Stream 回調函數示例代碼 CUDA 中的流回調函數(stream callback)是一種在 CUDA 流中插…

全棧黑暗物質:可觀測性之外的非確定性調試

一、量子計算的測不準Bug 1. 經典 vs. 量子系統的錯誤模式 量子程序崩潰的觀測影響: 調試方法崩潰復現率觀測干擾度日志打印12%35%斷點調試5%78%無侵入跟蹤27%9%量子態層析成像63%2% 二、量子調試工具箱 1. 非破壞性觀測協議 # 量子程序的無干擾快照 from qiski…

ASP.NET8.0入門與實戰

1、項目初始化 創建一個ASP.NET Core Web API的項目,取消Https和身份驗證。 API項目實際上是一個控制臺程序,這點可以在項目的屬性的輸出類型中看到。 launchSettings.json,在這里可以配置運行項目的名稱,端口號,路…