日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Minio分布式存储入门(使用新版本)

發布時間:2024/3/26 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Minio分布式存储入门(使用新版本) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、分布式文件系統應用場景

互聯網海量非結構化數據的存儲需求·

  • 電商網站:海量商品圖片
  • 視頻網站:海量視頻文件網盤:海量文件
  • 社交網站:海量圖片

二、minio的基礎概念

2.1 基礎感念

  • Object
    存儲到minio的基本對象,如文件、字節流、anything
  • Bucket
    用來存儲Object的邏輯空間,每個Bucket的數據是獨立的。相當于客戶端的頂層文件夾。
  • Drive
    即存儲數據的磁盤,在MinlO啟動時,以參數的方式傳入。Minio中所有的對象數據都會存儲在Drive里。
  • Set
  • 即一組Drive 的集合,分布式部署根據集群規模自動劃分一個或多個Set,每個Set中的Drive分布在不同位置。一個對象存儲在一個Set上。(For example: {1…64} is divided into 4 sets each of size 16.)

2.2 糾刪碼EC

MinlO使用糾刪碼機制來保證高可靠性,使用highwayhash來處理數據損壞( Bit Rot Protection )。關于糾刪碼簡單來說就是可以通過數學計算,把丟失的數據進行還原,它可以將n份原始數據,增加m份數據,并能通過n+m份中的任意n份數據還原為原始數據。即如果有任意小于等于m份的數據失效,仍然能通過剩下的數據還原出來。

三、使用docker運行部署

3.1 docker命令啟動minio(單個磁盤,無糾刪碼)(9000端口為api控制,50000為控制臺端口)賬號密碼都為admin

docker run --name minio -d \-p 9000:9000 \-p 50000:50000 \-v /mnt/minio/data:/data \-e MINIO_ROOT_USER="admin" \-e MINIO_ROOT_PASSWORD="123456789" \minio/minio:latest server --console-address ":50000" /data

3.2 糾刪碼模式啟動minio

docker run --name minio -d \-p 9000:9000 \-p 50000:50000 \-v /mnt/minio/data1:/data1 \-v /mnt/minio/data2:/data2 \-v /mnt/minio/data3:/data3 \-v /mnt/minio/data4:/data4 \-v /mnt/minio/data5:/data5 \-v /mnt/minio/data6:/data6 \-v /mnt/minio/data7:/data7 \-v /mnt/minio/data8:/data8\-e MINIO_ROOT_USER="admin" \-e MINIO_ROOT_PASSWORD="123456789" \minio/minio:latest server /data{1...8} --console-address ":50000"

8個文件存在于八個driver,4個為存放校驗碼,4個存放數據,可以通過糾錯碼進行恢復。

3.3 分布式集群部署minio

  • 數據保護
    分布式Minio采用 糾刪碼來防范多個節點宕機和位衰減 bit rot 。分布式Minio至少需要4個硬盤,使用分布式Minio自動引入了糾刪碼功能。
  • 高可用
    單機Minio服務存在單點故障,相反,如果是一個有N塊硬盤的分布式Minio,只要有N/2硬盤在線,你的
    數據就是安全的。不過你需要至少有N/2+1個硬盤來創建新的對象。
    例如,一個16節點的Minio集群,每個節點16塊硬盤,就算8臺服務器宕機,這個集群仍然是可讀的,不
    過你需要9臺服務器才能寫數據。
  • 一致性
    Minio在分布式和單機模式下,所有讀寫操作都嚴格遵守read-after-write一致性模型。

集群部署完成可以通過nginx負載均衡,讓集群有一個統一的入口。

3.4 下載minio client 以及使用

wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x mc ./mc --help mv mc /usr/local/sbin/# 查詢mc host配置,配置到.mc/cinfig.json中 mc config host ls # 添加minio服務 mc config host add minio-server http://192.168.229.130:9000 admin 123456789 # 刪除host mc config host remove minio-server

3.5 mc命令的使用

mc admin的使用

策略權限

Action為操作行為,Resource為資源

四、java操作minio

4.1 引入依賴

<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.0</version> </dependency> <dependency><groupId>me.tongfei</groupId><artifactId>progressbar</artifactId><version>0.5.3</version> </dependency> <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.8.1</version> </dependency>

4.2 編寫上傳代碼

//連接minioMinioClient minioClient = MinioClient.builder().endpoint("http:192.168.229.130:9000").credentials("admin", "123456789").build();//創建bucketString bucketName = "test";boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if(!isExist){minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());}minioClient.uploadObject(UploadObjectArgs.builder().bucket(bucketName).object("77.jpg").filename("C:\\Users\\86158\\Pictures\\QQ圖片20210829121954.jpg")//本地磁盤路徑.build());

4.3 編寫下載代碼

minioClient.downloadObject(DownloadObjectArgs.builder().bucket(bucketName).object("77.jpg").filename("77.jpg").build());

總結

以上是生活随笔為你收集整理的Minio分布式存储入门(使用新版本)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。