网站首页
Java
站长
开源
框架
理论
JS
Linux
DB
服务器
NET
生活
软件
PHP
其他
您的位置:首页 > 开源 > Minio的安装和Java使用示例
Minio的安装和Java使用示例
2023-8-8    2262    0

Minio 是个基于 Golang 编写的开源对象存储套件,基于Apache License v2.0开源协议,虽然轻量,却拥有着不错的性能。

它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL等。


minio.jpg


下载 (官网:https://min.io/  )

cd /tmp
wget https://dl.min.io/server/minio/release/linux-amd64/minio


创建安装目录,设置账号密码

mkdir -p /home/minio/data
chmod +x minio
cp minio /home/minio/data
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin


启动服务

#启动,该启动为前台启动
./minio server /home/minio/data
# 后台启动,默认端口方式 9000
nohup ./minio server /home/minio/data > /home/minio/data/minio.log 2>&1 &
#后台启动,自定义端口方式
nohup ./minio server /home/minio/data --address=0.0.0.0:9009 >/home/minio/data/minio.log 2>&1 &


查看服务是否启动成功

ps -ef | grep minio


访问服务,根据实际情况修改IP和端口

http://192.168.206.22:9000 


创建存储桶

minio存储桶.jpg


配置存储桶公开访问

默认配置下,访问存储桶是需要请求授权的。但是在实际场景下,我们往往希望允许直接访问。所以我们要把访问规则(Access Policy)设置为:Public 。这样我们就可以直接访问了,文件的访问地址的格式为 <http://IP:Port/{bucket}/{fileName}>。

注意 端口已实际启动端口为准。

例如:http://192.168.206.22:9000/test/wallhaven-p989gm_1920x1080.png 


minio存储桶.jpg


MinIO Java Client SDK提供简单的API来访问任何与Amazon S3兼容的对象存储服务。

官方demo: https://github.com/minio/minio-java 

官方文档:https://min.io/docs/minio/linux/developers/java/API.html 

新版 MinIO和旧版在 API使用上还是有一定的区别,比如:新版 MinIO采用 Builder构建者模式来构造 MinioClient对象。所以,官方demo仅供参考,尽量查看英文官方文档。


引入依赖

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.4</version>
</dependency>


编写HelloWorld程序

package com.example.demo;

import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;

import java.util.UUID;

public class MinioTest {
    public static void main(String[] args) {
        try {
            // 初始化连接
            MinioClient minioClient =
                    MinioClient.builder()
                            .endpoint("http://192.168.206.22:9000")
                            .credentials("hPnrX1KRjXqwE2Ef3rXE", "AJwbFRMFtzbrKe5bUlNdD5jR5RYwS5q2lw08GVvk")
                            // 直接用密码也可以,不建议
                            // .credentials("minioadmin", "minioadmin")
                            .build();

            String bucketName = "test";
            // 检查存储桶是否存在,不存在则创建
            boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
            if (!found) {
                minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
            } else {
                System.out.println("存储桶 " + bucketName + " 已存在.");
            }

            // 上传文件到桶
            minioClient.uploadObject(
                    UploadObjectArgs.builder()
                            .bucket(bucketName)                       // 指定桶
                            .object(UUID.randomUUID() + ".jpg") // 文件在桶里面名字,防止冲突用UUID命名
                            .filename("D:\\Temp\\HD00001.jpg")        // 文件路径
                            .build());
            System.out.println("上传成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


其他使用示例,参考官方

minio java api.jpg


上一篇: RabbitMQ延迟启动
下一篇: 雪花算法中非常好用的数字ID生成器yitter
发表评论:
您的网名:
个人主页:
编辑内容: