Minio分布式存储入门(使用新版本)
生活随笔
收集整理的這篇文章主要介紹了
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" /data3.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-server3.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分布式存储入门(使用新版本)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看穿晾衣架上的“手机人”说起:黑产套路能
- 下一篇: 微星z370安装linux系统,华硕z3