С быстрым развитием облачных вычислений и технологий больших данных объектное хранилище стало неотъемлемой частью современной архитектуры приложений. MinIO — это высокопроизводительный сервер объектного хранилища с открытым исходным кодом, совместимый с API Amazon S3 и очень подходящий для хранения больших объемов неструктурированных данных. В этой статье подробно описано, как использовать MinIO в Java, чтобы помочь разработчикам быстро приступить к работе и в полной мере использовать его мощные функции.
MinIO — это легкий объектный сервер хранения, предназначенный для облачных приложений. Он поддерживает распределенное развертывание, обеспечивает высокую доступность и надежную согласованность, а также совместим с API Amazon S3, что позволяет разработчикам легко переносить существующие приложения S3 на MinIO.
Чтобы облегчить разработчикам Java использование MinIO, MinIO предоставляет официальную клиентскую библиотеку Java. Библиотека предоставляет богатый API, который поддерживает такие операции, как загрузка, загрузка и удаление объектов, а также управление сегментами и настройку политик.
первый,в проектеpom.xml
Добавить в файлMinIO Зависимости клиентской библиотеки Java:
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.3</version>
</dependency>
В коде Java инициализируйте клиент MinIO с помощью:
import io.minio.MinioClient;
public class MinioExample {
public static void main(String[] args) {
try {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://localhost:9000")
.credentials("YOUR-ACCESS-KEY", "YOUR-SECRET-KEY")
.build();
// Используйте minioClient для работы
} catch (Exception e) {
e.printStackTrace();
}
}
}
Создайте новый сегмент с помощью клиента MinIO:
import io.minio.MakeBucketArgs;
public void createBucket(MinioClient minioClient, String bucketName) throws Exception {
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
System.out.println("Bucket created: " + bucketName);
} else {
System.out.println("Bucket already exists: " + bucketName);
}
}
Загрузить файлы в указанную корзину:
import io.minio.PutObjectArgs;
public void uploadObject(MinioClient minioClient, String bucketName, String objectName, String filePath) throws Exception {
minioClient.putObject(
PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.stream(new FileInputStream(filePath), new File(filePath).length(), -1)
.contentType("application/octet-stream")
.build()
);
System.out.println("Object uploaded: " + objectName);
}
Загрузите объекты из корзины в локальный файл:
import io.minio.GetObjectArgs;
public void downloadObject(MinioClient minioClient, String bucketName, String objectName, String destFilePath) throws Exception {
minioClient.getObject(
GetObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build(),
new File(destFilePath)
);
System.out.println("Object downloaded: " + objectName);
}
Удалить указанный объект из корзины:
import io.minio.RemoveObjectArgs;
public void deleteObject(MinioClient minioClient, String bucketName, String objectName) throws Exception {
minioClient.removeObject(
RemoveObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build()
);
System.out.println("Object deleted: " + objectName);
}
Установив политики сегментов, вы можете контролировать доступ к сегментам и объектам:
import io.minio.SetBucketPolicyArgs;
import java.nio.charset.StandardCharsets;
public void setBucketPolicy(MinioClient minioClient, String bucketName, String policy) throws Exception {
minioClient.setBucketPolicy(
SetBucketPolicyArgs.builder()
.bucket(bucketName)
.config(policy.getBytes(StandardCharsets.UTF_8))
.build()
);
System.out.println("Bucket policy set for: " + bucketName);
}
Заранее заданные URL-адреса обеспечивают временный доступ к объектам без раскрытия ключей доступа:
import io.minio.GeneratePresignedUrlArgs;
public String generatePresignedUrl(MinioClient minioClient, String bucketName, String objectName) throws Exception {
return minioClient.getPresignedObjectUrl(
GeneratePresignedUrlArgs.builder()
.bucket(bucketName)
.object(objectName)
.method(HttpMethod.GET)
.expiry(2, TimeUnit.HOURS)
.build()
);
}
Являясь высокопроизводительным сервером хранения объектов, MinIO предоставляет разработчикам Java удобные API и мощные функции. Я полагаю, что благодаря этой статье вы освоили использование MinIO в Java для выполнения основных операций с объектным хранилищем и поняли, как использовать его расширенные функции для повышения безопасности и гибкости вашего приложения.