最近公司有存储非结构化数据的需求,所以需要一个文件存储服务器,fastdfs是一个老牌的分布式文件系统,一般都会选择此文件系统,但是fastdfs部署实在繁琐,而且维护也麻烦,所以重新找了其他的,发现Minio简介看上去也挺好用,然后部署也很简单。
这篇文章是我刚开始学习测试MinIo的记录,所以是初学者的视角来使用Minio,之后深入使用会继续更新MinIO的真实体验。
启动MinIO服务我比较喜欢使用docker,所以用Docker启动Minio服务
docker run -p 9000:9000 -p 9001:9001 --name minio -d --restart=always -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=12345678" -v /data/minio/data:/data -v /data/minio/config:/root/.minio minio/minio server --console-address ":9001" /data
这里存在一个问题
- MINIO_ROOT_USER:用户名,长度最小是5个字符
- MINIO_ROOT_PASSWORD:密码,密码不能设置过于简单,不然minio会启动失败,长度最小是8个字符
因为这个问题,刚开始一直不能启动,我还以为我启动的有问题。一直转圈圈,后来用docker看了一下日志,发现了问题,尴尬。
docker logs 容器IDJava服务调用
引入相关的Jar包
io.minio minio8.3.3 com.squareup.okhttp3 okhttp4.9.1
代码
import io.minio.*; public class MinioFileUpload { public static void main(String[] args) { try{ MinioClient minioClient = MinioClient .builder().endpoint("http://192.168.164.130:9000") .credentials("admin","12345678").build(); String bucketName = "pdf-file"; boolean found = minioClient .bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); if(!found){ //如果不存在就创建 minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); } //上传文件 minioClient.uploadObject(UploadObjectArgs.builder() .bucket(bucketName) .object("阿里巴巴Java开发手册1.4.0.pdf") .filename("C:\Users\panlf\Desktop\阿里巴巴Java开发手册1.4.0.pdf") .build()); //下载文件 minioClient.downloadObject(DownloadObjectArgs.builder() .bucket(bucketName) .object("阿里巴巴Java开发手册1.4.0.pdf") .filename("阿里巴巴Java开发手册1.4.0.pdf").build()); }catch (Exception e){ e.printStackTrace(); } } }
上面调用服务,突然报错
The difference between the request time and the current time is too large
主要是因为服务器时间差过大,然后服务器需要重新同步一下时间
1. 安装ntp ntpdate yum -y install ntp ntpdate 2. 与时间服务器同步时间 ntpdate cn.pool.ntp.org
然后就可以正常使用。
总结初学者来说,Minio服务部署简单,调用代码也很简单,对新手友好,后面看看实际使用体验如何。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)