主頁 > 軟體設計 > 分布式檔案存盤服務器之Minio物件存盤技術參考指南

分布式檔案存盤服務器之Minio物件存盤技術參考指南

2021-10-15 18:23:19 軟體設計

Minio物件存盤技術

minio

MinIO 是一種高性能物件存盤解決方案,原生支持 Kubernetes 部署,MinIO 提供與 Amazon Web Services S3 兼容的 API 并支持所有核心 S3 功能,MinIO 是在GNU Affero 通用公共許可證 v3.0下發布的,

也許提起物件存盤技術,我們都經歷過Fastdfs長時間的拉鋸戰,即使現在大部分都在使用云服務廠商提供的OSS物件存盤服務,但是其所花費的經濟成本也是遞增的,而且資料都存盤在別人的服務器上,從一定程度上來說,對于檔案資源的把控粒度是極其不可控制,公網資料是何其的沒有隱私可言,雖然,對于開發層面上來說,只需要整合對應的SDK,對其使用已經是開箱即用,但是,對于選擇自研物件存盤技術來說,Minio何嘗不失為一大利器,
其搭建程序與整合方面,幾乎已經沒有什么瓶頸可言,不論是從傳統服務器的安裝,還是基于Docker以及Kubernetes的部署,簡直簡單得不要不要的,

基本概述

MinIO supports the widest range of use cases across the largest number of environments. Cloud native since inception, MinIO’s software-defined suite runs seamlessly in the public cloud, private cloud and at the edge - making it a leader in the hybrid cloud. With industry leading performance and scalability, MinIO can deliver a range of use cases from AI/ML,analytics, backup/restore and modern web and mobile apps.

MinIO 在最大數量的環境中支持最廣泛的用例,自云原生以來,MinIO 的軟體定義套件在公共云、私有云和邊緣無縫運行——使其成為混合云的領導者,憑借行業領先的性能和可擴展性,MinIO 可以提供一系列用例,包括 AI/ML、分析、備份/恢復以及現代 Web 和移動應用程式,

  • Hybrid Cloud:混合云
  • Born cloud native :云原生
  • MinIO is pioneering high performance object storage:高性能物件存盤的先驅
  • Built on the principles of web scale:建立在網路規模的原則上
  • The #1 open source object store. And the most enterprise ready.開源物件存盤,并且最適合企業
  • The defacto standard for Amazon S3 compatibility:Amazon S3 兼容性的事實標準
  • Simply powerful:簡單強大[極簡主義]

基本特點

MinIO 的企業級特性代表了物件存盤空間的標準,從 AWS S3 API 到 S3 Select 以及我們對行內擦除編碼和安全性的實施,我們的代碼廣受贊譽,并經常被一些技術和商業領域的大腕復制,

  • Erasure Coding:糾錯碼

MinIO 使用以匯編代碼撰寫的每個物件行內擦除編碼來保護資料,以提供盡可能高的性能,MinIO 使用 Reed-Solomon 代碼將物件條帶化為具有用戶可配置冗余級別的資料和奇偶校驗塊,MinIO 的 Erasure Coding 在物件級別執行修復,可以獨立修復多個物件,

在 N/2 的最大奇偶校驗下,MinIO 的實作可以確保在部署中僅使用 ((N/2)+1) 個操作驅動器進行不間斷的讀寫操作,例如,在 12 個驅動器的設定中,MinIO 將物件分片到 6 個資料和 6 個奇偶校驗驅動器,并且可以可靠地寫入新物件或重建現有物件,而部署中僅剩下 7 個驅動器,

  • Bitrot Protection:Bitrot 保護

靜默資料損壞或 bitrot 是磁盤驅動器面臨的嚴重問題,導致資料在用戶不知情的情況下損壞,原因是多方面的(驅動器老化、電流峰值、磁盤韌體中的錯誤、幻像寫入、讀取/寫入方向錯誤、驅動程式錯誤、意外覆寫),但結果是一樣的 - 資料受損,

MinIO 對HighwayHash演算法的優化實作確保它永遠不會讀取損壞的資料 - 它即時捕獲和修復損壞的物件,通過在 READ 上計算散列并在從應用程式、網路到記憶體/驅動器的 WRITE 上對其進行驗證來確保端到端的完整性,該實作專為速度而設計,可以在 Intel CPU 的單核上實作超過 10 GB/秒的散列速度,

  • Encryption:加密處理

在飛行中加密資料是一回事;保護靜態資料是另一回事,MinIO 支持多種復雜的服務器端加密方案來保護資料——無論資料在哪里,MinIO 的方法以可忽略的性能開銷確保機密性、完整性和真實性,使用 AES-256-GCM、ChaCha20-Poly1305 和 AES-CBC 支持服務器端和客戶端加密,

加密物件使用 AEAD 服務器端加密進行防篡改,此外,MinIO 與所有常用的密鑰管理解決方案(例如 HashiCorp Vault)兼容并經過測驗,MinIO 使用密鑰管理系統 (KMS) 來支持 SSE-S3,

如果客戶端請求 SSE-S3 或啟用自動加密,則 MinIO 服務器使用唯一的物件密鑰加密每個物件,該物件密鑰受 KMS 管理的主密鑰保護,鑒于極低的開銷,可以為每個應用程式和實體打開自動加密,

  • Identity Management:身份管理

MinIO 支持身份管理中最先進的標準,與 OpenID 連接兼容提供商以及關鍵的外部 IDP 供應商集成,這意味著訪問是集中的,密碼是臨時的和輪換的,而不是存盤在組態檔和資料庫中,此外,訪問策略是細粒度和高度可配置的,這意味著支持多租戶和多實體部署變得簡單,

  • Continuous Replication:連續復制

傳統復制方法的挑戰在于,它們無法有效擴展超過數百 TB,話雖如此,每個人都需要一個復制策略來支持災難恢復,并且該策略需要跨越地域、資料中心和云,

MinIO 的持續復制專為大規模、跨資料中心部署而設計,通過利用 Lambda 計算通知和物件元資料,它可以高效快速地計算增量,Lambda 通知確保更改立即傳播,而不是傳統的批處理模式,

連續復制意味著如果發生故障,即使面對高度動態的資料集,資料丟失也將保持在最低限度,最后,與 MinIO 所做的一樣,持續復制是多供應商的,這意味著您的備份位置可以是從 NAS 到公共云的任何位置,

  • Global Federation:全球聯合會

現代企業到處都有資料,MinIO 允許將這些不同的實體組合起來形成一個統一的全域命名空間,具體來說,可以將任意數量的 MinIO 服務器組合成一個分布式模式集,多個分布式模式集可以組合成一個 MinIO 服務器聯合,每個 MinIO Server Federation 都提供統一的管理和命名空間,

MinIO 聯合服務器支持無限數量的分布式模式集,這種方法的影響是物件存盤可以為大型、地理分布的企業大規模擴展,同時保留從單個控制臺容納各種應用程式(Splunk、Teradata、Spark、Hive、Presto、TensorFlow、H20)的能力,

  • Multi-Cloud Gateway:多云網關

所有企業都在采用多云戰略,這也包括私有云,因此,您的裸機虛擬化容器和公共云服務(包括 Google、Microsoft 和阿里巴巴等非 S3 提供商)必須看起來相同,雖然現代應用程式具有高度可移植性,但支持這些應用程式的資料卻不是,

讓這些資料無論位于何處都可用,是 MinIO 解決的主要挑戰,MinIO 在裸機、網路附加存盤和每個公共云上運行,更重要的是,MinIO 通過 Amazon S3 API 確保您從應用程式和管理的角度來看這些資料的視圖看起來完全相同,

MinIO 可以走得更遠,使您現有的存盤基礎設施與 Amazon S3 兼容,影響是深遠的,現在,組織可以真正統一他們的資料基礎設施——從檔案到塊,所有這些都顯示為可通過 Amazon S3 API 訪問的物件,而無需遷移,

  • WORM:WORM物件鎖定

啟用 WORM 后,MinIO 會禁用所有可能改變物件資料和元資料的 API,這意味著一旦寫入的資料就可以防篡改,這對于許多不同的監管要求具有實際應用,

基本架構

MinIO 被設計為云原生,可以作為由外部編排服務(如 Kubernetes)管理的輕量級容器運行,整個服務器是一個約 40MB 的靜態二進制檔案,并且在使用 CPU 和記憶體資源方面非常高效 - 即使在高負載下也是如此,結果是您可以在共享硬體上共同托管大量租戶,

MinIO 在帶有本地連接驅動器 (JBOD/JBOF) 的商用服務器上運行,集群中的所有服務器的能力相同(完全對稱架構),沒有名稱節點或元資料服務器,

MinIO 將資料和元資料作為物件一起寫入,無需元資料資料庫,此外,MinIO 將所有功能(擦除代碼、bitrot 檢查、加密)作為行內、嚴格一致的操作執行,結果是 MinIO 非常有彈性,

每個 MinIO 集群是一組分布式 MinIO 服務器,每個節點一個行程,MinIO 作為單個行程在用戶空間運行,并使用輕量級協程來實作高并發,驅動器被分組到擦除集(默認情況下每組 16 個驅動器),并且使用確定性散列演算法將物件放置在這些集上,

MinIO 專為大規模、多資料中心的云存盤服務而設計,每個租戶運行自己的 MinIO 集群,與其他租戶完全隔離,使他們能夠保護他們免受升級、更新和安全事件的任何中斷,每個租戶通過跨地域聯合集群來獨立擴展,

MinIO 服務器功能

MinIO 的企業級特性代表了物件存盤空間的標準,從 AWS S3 API 到 S3 Select 以及我們對行內擦除編碼和安全性的實施,我們的代碼廣受贊譽,并經常被一些技術和商業領域的大腕復制,

MinIO 物件保留

默認情況下,對唯一物件名稱的每次新寫入操作都會導致覆寫該物件,您可以將 MinIO 配置為創建 每個物件突變的版本,從而保留該物件的完整歷史記錄,MinIO 還支持一次寫入多次 讀取 (WORM) 鎖定版本化物件,以確保在指定的持續時間內或直到顯式解除鎖定為止的完全不變性,

版本控制和物件鎖定功能僅適用于 分布式 MinIO 部署:

  • Bucket Versioning:存盤桶版本控制

MinIO 支持在單個存盤桶中保存物件的多個“版本”,通常會覆寫現有物件的寫入操作會導致創建新的版本化物件,MinIO 版本控制可防止意外覆寫和洗掉,同時支持“撤消”寫入操作,存盤桶版本控制是配置物件鎖定和保留規則的先決條件 ,

對于版本化存盤桶,任何改變物件的寫入操作都會導致該物件的新版本具有唯一的版本 ID,MinIO 標記客戶端默認檢索的物件的“最新”版本,然后,客戶端可以明確選擇列出、檢索或洗掉特定物件版本,

其中:

  1. 具有單一版本的物件:MinIO 為每個物件添加一個唯一的版本 ID 作為寫入操作的一部分,

2.具有多個版本的物件:MinIO 保留物件的所有版本,并將最新版本標記為“最新”,

3.檢索最新的物件版本

4.檢索特定物件版本

  • WORM:物件鎖定

MinIO 物件鎖定(“物件保留”)強制執行一次寫入多次讀取 (WORM) 不變性以保護版本化物件不被洗掉,MinIO 支持 基于持續時間的物件保留 和 無限期合法保留保留,

MinIO 物件鎖定提供關鍵資料保留合規性,并符合Cohasset Associates 的SEC17a-4(f)、FINRA 4511(C) 和 CFTC 1.31(c)-(d) 要求 ,

其中:

  1. 不帶鎖的桶:MinIO 版本控制保留了物件突變的完整歷史,但是,應用程式可以明確洗掉特定的物件版本,

  1. 帶鎖的桶:對存盤桶中的物件應用默認的 30 天 WORM 鎖定可確保所有物件版本的最短保留期和保護期,

3.鎖定桶中的洗掉操作:洗掉操作遵循版本化存盤桶中的正常行為 ,其中 MinIODeleteMarker為物件創建一個,但是,物件的非洗掉標記版本仍受保留規則約束,并且不會受到任何特定洗掉或覆寫嘗試的影響,

4.鎖定存盤桶中的版本化洗掉操作:MinIO 會阻止任何洗掉在 WORM 鎖定下持有的特定物件版本的嘗試,客戶端可以洗掉版本的最早可能時間是鎖定到期時,

Minio部署和管理

MinIO 是一個軟體定義的高性能分布式物件存盤服務器,您可以在消費級或企業級硬體以及各種作業系統和架構上運行 MinIO,

MinIO 支持兩種部署模式:獨立分布式

  • 獨立部署:具有單個存盤卷或檔案夾的單個 MinIO 服務器,獨立部署最適合使用 MinIO 進行物件存盤的應用程式的評估和初始開發,或為單個存盤卷提供 S3 訪問層,獨立部署不提供對全套 MinIO 高級 S3 特性和功能的訪問,
  • 分布式部署:一臺或多臺 MinIO 服務器,所有服務器上至少有四個總存盤卷,分布式部署最適合生產環境和作業負載,并支持 MinIO 的所有核心和高級 S3 特性和功能,對于生產環境,MinIO 建議使用 4 個節點和 4 個驅動器的基線拓撲,

著作權宣告:本文為博主原創文章,遵循相關著作權協議,如若轉載或者分享請附上原文出處鏈接和鏈接來源,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/316030.html

標籤:其他

上一篇:【設計模式】- 單例模式

下一篇:如何避免WooCommerce電子郵件模板中的樣式注入

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more