DAOS系統架構-RDB

1. 概述

基于Raft共識算法和強大的領導地位策略,pool service和container service可以通過復制其內部的元數據來實現高可用。通過這種方法實現具有副本能力的服務可以容忍少數副本中的任何一個出現故障。通過將每個服務的副本分布在容災域中,pool service和container service可以容忍合理數量的targets出現故障。

?

2. 架構

一個復制服務(replicated service)是基于Raft復制日志( replicated log)構建的。該服務將RPCs轉換成狀態查詢和確定性狀態更新操作。在被應用于任何一個服務副本之前,所有狀態的更新操作首先提交到副本日志中。由于Raft保證了日志副本之間的一致性,因此服務副本最終以相同的順序應用相同的更新狀態集,并經歷完全相同的狀態歷史。

在一個復制服務的所有副本當中,只有當前領導者可以處理服務RPCs。一個服務的領導者就是當前Raft的領導者(即此刻任期數最高的)非領導者拒絕所有的服務RPCs,并盡其所知的將客戶端請求重定向當前領導。客戶端會緩存副本服務的地址以及當前的領導者。有時,客戶端可能不會獲得任何有意義的重定向提示,并且可以通過與隨機的一個副本通信來找到當前領導者。
service_replication_modules
上圖展示了構成一個服務副本的相關模塊。service模塊通過將RPCs轉換成狀態查詢和確定性狀態更新操作來處理RPCs。Raft模塊通過與其他副本上的Raft模塊通信,按照Raft協議來實現復制的日志。Raft模塊為service模塊執行狀態查詢和狀態更新提供了方法。Storage模塊(本例中是持久化內存和文件系統)用于存儲service以及Raft狀態。它使用VOS以原子方式更新存儲在持久化內存中的狀態。

?

3. RPC處理

當RPC請求到達領導者服務時,service模塊的服務線程會接收該請求,并通過執行專門為此類型請求設計的句柄函數(handler function)來處理該請求。就副本服務而言,一個句柄包括:狀態查詢(比如讀取存儲池屬性)、狀態更新(比如寫入一個新版本的pool map)、以及到其他服務的RPCs(比如發送請求到其他target服務)。一些句柄只涉及到查詢,一些句柄會涉及到更新和查詢,另外一些會涉及以上三種。很少見一種情況是,如果有的話,句柄只涉及到更新而不執行查詢。

句柄必須將所有的更新操作組合到單個日志條目中,然后提交日志條目,并在將更新操作應用于服務狀態之前要等待該日志條目成為可適應的。為每一個更新操作的RPC使用單個日志條目很容易使得每個更新操作的RPC在領導者服務出現崩潰或者領導者地位改變時具有原子性。如果在未來引入的RPCS不滿足這些要求,則需要額外事務回復機制。領導者服務的狀態始終表示該領導者到目前位置處理的所有已完成的更新操作的RPC的效果。

另一方面,查詢操作可以直接從服務的狀態讀取,而無需通過復制的日志。然而,為了確保一個請求可以看到所有已經處理過的RPC的效果,該句柄必須詢問Raft模塊領導地位是否有變動。如果沒有,那么到目前位置,針對該請求的所有查詢都不是過時的。如果領導者失去了其領導地位,那么句柄會終止請求,并將客戶端請求重定向到新的領導者。

針對到其他服務的RPCs這種情況,如果這些請求更新了目標服務的狀態,則必須是等冪的。當領導地位發生變化時,如果客戶端重新發送了服務端請求,那么新的領導者可能也要重新向其他服務發送RPCs。

句柄需要處理合理的并發執行操作。通常,在領導者服務上使用本地鎖可以使RPC的執行線性化。一旦領導者地位發生變化,舊的領導者不再執行任何更新操作,這將導致所有的RPCs執行被終止。因此,新領導者上的RPCs與留在舊領導者上的RPCs的并不沖突。因此,不需要鎖作為服務狀態的一部分進行復制。

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

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

相關文章

深入GPU硬件架構及運行機制

轉自深入GPU硬件架構及運行機制 - 0向往0 - 博客園,基本上是其理解。 一、GPU概述 1.1 GPU是什么? GPU全稱是Graphics Processing Unit,圖形處理單元。它的功能最初與名字一致,是專門用于繪制圖像和處理圖元數據的特定芯片&…

數值計算庫:Eigen與Boost.Multiprecision全方位解析

在科學計算、工程模擬、機器學習等領域,高效的數值計算能力是構建高性能應用的基石。C作為性能優先的編程語言,擁有眾多優秀的數值計算庫,其中Eigen和Boost.Multiprecision是兩個極具代表性的工具。本文將深入探討這兩個庫的核心特性、使用場…

第十八節:第三部分:java高級:反射-獲取構造器對象并使用

Class提供的獲取類構造器的方法以及獲取類構造器的作用代碼:掌握獲取類的構造器,并對其進行操作 Cat類 package com.itheima.day9_reflect;public class Cat {private String name;private int age;private Cat(String name, int age) {this.name name;…

集中打印和轉換Office 批量打印精靈:Word/Excel/PDF 全兼容,效率翻倍

各位辦公小能手們!你們平時辦公的時候,是不是經常要打印一堆文件,煩得要命?別慌,今天我給大家介紹一款超厲害的神器——Office批量打印精靈! 軟件下載地址安裝包 這玩意兒啊,是專門為高效辦公設…

docker的搭建

一、安裝docker使用以下命令進行安裝dockerapt-get install docker.io docker-compose使用以下命令進行查看docker是否開啟systemctl status docker由此可見,docker沒有打開,進行使用命令打開。systemctl start docker再次查看是否開啟。肉眼可見&#x…

數據庫管理-第349期 Oracle DB 23.9新特性一覽(20250717)

數據庫管理349期 2025-07-17數據庫管理-第349期 Oracle DB 23.9新特性一覽(20250717)1 JavaScript過程和函數的編譯時語法檢查2 不再需要JAVASCRIPT上的EXECUTE權限3 GROUP BY ALL4 使用SQL創建并測試UUID5 IVF索引在線重組6 JSON到二元性遷移器&#xf…

將CSDN文章導出為PDF

作者:翟天保Steven 版權聲明:著作權歸作者所有,商業轉載請聯系作者獲得授權,非商業轉載請注明出處前言在日常學習和技術積累過程中,我們經常會在 CSDN 等技術博客平臺上閱讀高質量的技術文章。然而,網頁閱讀…

macOS - Chrome 關閉自動更新

進入 Google 相關資源文件夾 刪除 GoogleSoftwareUpdate 文件夾 open ~/Library/Google 部分教程推薦,在 chrome://flags/ 頁面設置,但最近沒看到 自動更新相關開關。2025-07-13(日)

Python 模塊化編程全解析:模塊、包與第三方庫管理指南

模塊與包 模塊化編程是什么?用生活例子秒懂 想象你在搭樂高積木: 每個小積木塊都有特定功能(比如輪子、窗戶、墻壁)—— 這就像模塊(一個.py 文件,封裝了函數或類)。把相關的積木塊裝進一個盒…

小白學Python,網絡爬蟲篇(2)——selenium庫

前言 selenium 庫是一種用于 Web 應用程序測試的工具,它可以驅動瀏覽器執行特定操作,自動按照腳本代碼做出單擊、輸入、打開、驗證等操作,支持的瀏覽器包括 IE、Firefox、Safari、Chrome、Opera 等。 與 requests 庫不同的是,se…

Java安全:SpringBoot項目中Fastjson組件的使用與安全實踐

前言 Fastjson是阿里巴巴開源的一個高性能Java JSON庫,廣泛用于Java對象的序列化和反序列化操作。在SpringBoot項目中,Fastjson常被用作JSON處理工具。然而,Fastjson因其高性能而廣受歡迎的同時,也因多次爆出的安全漏洞而備受關注…

x的平方根

給你一個非負整數 x ,計算并返回 x 的 算術平方根 。由于返回類型是整數,結果只保留 整數部分 ,小數部分將被 舍去 。注意:不允許使用示例 1:輸入:x 4 輸出:2示例 2:輸入&#xff1…

oracle服務器定時備份Windows Server

-- 創建目錄對象(若未創建),先建立對應文件夾才能用目錄對象CREATE OR REPLACE DIRECTORY dp_dirbackup AS D:\BACKUP; --配置路徑 GRANT READ, WRITE ON DIRECTORY dp_dirbackup TO 用戶名; --配置用戶權限-- 備份腳本(保存為每…

HTML data-* 屬性 自定義屬性

data-* 屬性用于存儲私有頁面后應用的自定義數據。 data-* 屬性可以在所有的 HTML 元素中嵌入數據。 自定義的數據可以讓頁面擁有更好的交互體驗(不需要使用 Ajax 或去服務端查詢數據)。 data-* 屬性由以下兩部分組成:1. 屬性名不要包含大寫字…

Oracle 大頁配置use_large_pages 參數解析

一、前因 再給一位客戶的Exdata 2 節點 RAC 19C版本創建數據庫并配置好優化參數后,客戶一天發來一份健康檢查報告,打開一看 use_large_pages 配置異常。 回想安裝部署時特意確認了在db啟動大頁已經生效,為何會有此異常告警項? 二…

迅為八核高算力RK3576開發板攝像頭實時推理測試 ppyoloe目標檢測

RK3576處理器迅為iTOP-3576開發板采用瑞芯微RK3576高性能、低功耗的應用處理芯片,集成了4個Cortex-A72和4個Cortex-A53核心,以及獨立的NEON協處理器。它適用于ARM PC、邊緣計算、個人移動互聯網設備及其他多媒體產品。NPU高達6TOPS算力支持INT4/INT8/INT…

純CSS輪播

純CSS輪播 在現代網頁設計中,輪播組件是一種常見的用戶界面元素,廣泛應用于展示圖片、產品信息等內容。本文將詳細介紹如何使用純 HTML/CSS 和少量 JavaScript 實現一個功能完備的 CSS Scroll Snap 輪播組件。該組件不僅支持原生左右拖拽滾動&#xff0c…

從零開始的云計算生活——番外3,LVS+KeepAlived+Nginx高可用實現方案

目錄 前言 一、環境搭建 1.環境準備 2.安裝ipvsadm和keepalived(Lvs服務器),nginx服務器安裝nginx 3.為兩臺RS配置虛擬ip(nginx服務器) 1.配置虛擬網絡子接口 2.ARP響應級別與通告行為的概念 3.配置ARP 二、Ke…

100201組件拆分_編輯器-react-仿低代碼平臺項目

文章目錄1 設計UI,組件拆分2 實現關于1 設計UI,組件拆分 編輯器整體如上圖所示,重點關注: flex彈性布局 上 左中右 下 左中右 畫布居中畫布Y軸滾動 2 實現 src/pages/question/Edit/index.tsx代碼如下: import { …

CS課程項目設計2:交互友好的五子棋游戲

上次給大家分享了井字棋游戲的設計流程 CS課程項目設計1:交互友好的井字棋游戲-CSDN博客https://blog.csdn.net/weixin_36431280/article/details/149309500?spm1001.2014.3001.5501今天打算再分享進階版井字棋游戲的版本設計——五子棋游戲。五子棋游戲操作方式與…