一、与java集成
参考官网
英文官网:https://docs.min.io/
中文文档(中文官网更新慢):http://docs.minio.org.cn
1.1导入maven
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.7</version>
</dependency>
1.2测试使用的demo
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
class CrmExcleMinioApplicationTests {
// 官方demo:浏览下即可
@Test
void minioTest() throws IOException, NoSuchAlgorithmException, InvalidKeyException {
try {
// Create a minioClient with the MinIO server playground, its access key
// and secret key.
MinioClient minioClient =
MinioClient.builder()
.endpoint("https://play.min.io") //.region("us-east-2")
.credentials("Q3AM3UQ867SPQQA43P2F", "zuf" +
"+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG")
.build();
// Make 'asiatrip' bucket if not exist.
boolean found =
minioClient.bucketExists(BucketExistsArgs.builder().bucket(
"asiatrip").build());
if (!found) {
// Make a new bucket called 'asiatrip'.
minioClient.makeBucket(MakeBucketArgs.builder().bucket("asiatrip").build());
} else {
System.out.println("Bucket 'asiatrip' already exists.");
}
// Upload '/home/user/Photos/asiaphotos.zip' as object name
// 'asiaphotos-2015.zip' to bucket
// 'asiatrip'.
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("asiatrip")
.object("1.jpg")
.filename("D://1.jpg")
.build());
System.out.println(
"上传成功");
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
System.out.println("HTTP trace: " + e.httpTrace());
}
}
@Test
void minioTest2() throws IOException, NoSuchAlgorithmException, InvalidKeyException {
try {
// 创建连接
MinioClient minioClient =
MinioClient.builder()
.endpoint("http://127.0.0.1:9000") //.region("us-east-2")
.credentials("minioadmin", "minioadmin")
.build();
// 如果使用的 桶不存在 则创建 桶
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(
"ssss").build());
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket("ssss").build());
}
// 上传文件
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("ssss")
.object("nba.jpg")
.filename("nba.jpg")
.build());
System.out.println("上传成功");
} catch (MinioException e) {
e.printStackTrace();
}
}
}
二、关于纠删码
纠删码技术是一种数据恢复技术,最早用于通信行业中数据传输中的数据恢复,是一种编码容错技术。它通过在原始数据中加入新的校验数据,使得各个部分的数据产生关联性。在一定范围内的数据出错情况下,通过纠删码技术都可以进行恢复。比如:有原始数据块n个,然后加入m个校验数据块。原始数据块和校验数据块在丢失时,都可以通过现有的数据块进行恢复。
举例:
①x=1
②y=2
③z=3
④x+y+z=6
⑤2x+3y+z=11
⑥x+2y+3z=14
1)如果我们丢了3个原始数据块,可以恢复
④x+y+z=6
⑤2x+3y+z=11
⑥x+2y+3z=14
2)如果我们丢失了3个数据校验块,可以恢复
①x=1
②y=2
③z=3