主流开源文件存储系统-fastdfs是否支持windows?你可以选择minio

首先答案是肯定的,fastdfs不支持windows。
其次建议你使用Minio

一、引言

一般来说文件存储花钱就选择阿里云oss、七牛云等产品,开源的话,目前开源的分布式文件存储系统非常多,上网一搜 "Ceph,GlusterFS,Sheepdog,

Lustre,Swift,Cinder,TFS,HDFS,MooseFS,FastDFS,MogileFS等" 这么多,有没有感觉看完对这些产品的分析后,还是不知道选择哪个????

这是一篇针对主流的开源的分布式文件存储系统的对比文章:

开源分布式存储系统的对比_直到世界的尽头-CSDN博客_四大开源分布式存储​blog.csdn.net​编辑

二、那到底选择哪个呢?

2.1、实在没法选择时,我们先看看几开源产品github 的 star

分布式文件系统github staros支持
minio25.1kwin/linux
fastdfs7kwin
ceph8.6kwin/linux
GlusterFS2.9kwin/linux

2.2、推荐使用minio

看看这篇文章:《MinIO很强-让我放弃FastDFS拥抱MinIO的8个理由》

MinIO很强-让我放弃FastDFS拥抱MinIO的8个理由​www.cnblogs.com

三、minio安装与使用

3.1、 windows安装非常简单

官网直接下载:

https://min.io/​min.io

启动就这么简单, F:\Data 就是文件存储的目录

3.3、java调用minio

在官方上有相应的demo,不过官网引用的版本比较旧,相应的demo也比较旧,最新的demo我们可以去github上看。

githug examples:

https://github.com/minio/minio-java​github.com

minio/minio-javahttps://github.com/minio/minio-java​github.com

以下代码基于官方github微调后的示例

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

class MinioTest {
    MinioClient minioClient;

    @BeforeEach
    void setUp() {
        minioClient =
                MinioClient.builder()
                        .endpoint("https://play.min.io")
                        .credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG")
                        .build();
    }

    /**
     * 上传文件
     *
     * @throws Exception
     */
    @Test
    void test_upload() throws Exception {
        minioClient.uploadObject(
                UploadObjectArgs.builder()
                        .bucket("bucket01")
                        .object("test.txt")
                        .filename("D:\\data\\Desktop\\test.txt")
                        .build());

        System.out.println("my-filename is uploaded to my-objectname successfully");
    }



    /**
     * 下载文件
     *
     * @throws Exception
     */
    @Test
    void test_download() throws Exception {
        minioClient.downloadObject(
                DownloadObjectArgs.builder()
                        .bucket("bucket01")
                        .object("test.txt")
                        .filename("D:\\data\\Desktop\\test.txt")
                        .build());

        System.out.println("my-filename is uploaded to my-objectname successfully");
    }




    /**
     * 获取文件URL
     *
     * @throws Exception
     */
    @Test
    void test_geturl() throws Exception {
        String url =
                minioClient.getPresignedObjectUrl(
                        GetPresignedObjectUrlArgs.builder()
                                .method(Method.GET)
                                .bucket("bucket01")
                                .object("test.txt")
                                .expiry(60 * 60 * 24)
                                .build());
        System.out.println(url);
    }



    /**
     * 上传+加密
     *
     * @throws Exception
     */
    @Test
    void test_upload_sse() throws Exception {
        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
        keyGen.init(256);
        ServerSideEncryptionCustomerKey ssec =
                new ServerSideEncryptionCustomerKey(keyGen.generateKey());

        minioClient.uploadObject(
                UploadObjectArgs.builder()
                        .bucket("bucket01")
                        .object("test-sse-01.txt")
                        .filename("D:\\data\\Desktop\\test.txt")
                        .sse(ssec)
                        .build());
        System.out.println("my-filename is uploaded to my-objectname successfully");
    }




    /**
     * 下载+解密
     *
     * @throws Exception
     */

    @Test
    void test_download_sse() throws Exception {
        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
        keyGen.init(256);
        ServerSideEncryptionCustomerKey ssec =
                new ServerSideEncryptionCustomerKey(keyGen.generateKey());

        minioClient.downloadObject(
                DownloadObjectArgs.builder()
                        .bucket("bucket01")
                        .object("test-sse-01.txt")
                        .filename("D:\\data\\Desktop\\_test-sse-01.txt")
                        .ssec(ssec) // Replace with same SSE-C used at the time of upload.
                        .build());
        System.out.println("my-objectname is successfully downloaded to my-filename");
    }




    /**
     * 如何保存上传时的密钥对象
     *
     * @throws Exception
     */

    @Test
    void test_key() throws Exception {
        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
        keyGen.init(256);
        SecretKey key1 = keyGen.generateKey();
        byte[] keySave = key1.getEncoded();
        System.out.println("key1 = " + Base64.getEncoder().encodeToString(keyBytes));
        //这里把keySave 保存下来就可以了,当然我们可以转成base64保存

        //以下就是把存储下来的keySave还原成SecretKey对象
        SecretKey key2 = new SecretKeySpec(keySave , "AES");
        System.out.println("key2 = " + Base64.getEncoder().encodeToString(key2 .getEncoded()));

        //key1 == key2
        assertEquals(key1,key2);


    }
}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
go-fastdfs是一个基于http协议的分布式文件系统,它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性能、高可靠、无中心、免维护等优点。 特点: 支持curl命令上传 支持浏览器上传 支持HTTP下载 支持多机自动同步 支持断点下载 支持配置自动生成 支持小文件自动合并(减少inode占用) 支持秒传 支持跨域访问 支持一键迁移(搬迁) 支持异地备份(特别是小文件1M以下) 支持并行体验 支持断点续传(tus) 支持docker部署 支持自监控告警 支持图片缩放 支持google认证码 支持自定义认证 支持集群文件信息查看 使用通用HTTP协议 无需专用客户端(支持wget,curl等工具) 类fastdfs 高性能 (使用leveldb作为kv库) 高可靠(设计极其简单,使用成熟组件) 无中心设计(所有节点都可以同时读写) 优点: 无依赖(单一文件) 自动同步 失败自动修复 按天分目录方便维护 支持不同的场景 文件自动去重 支持目录自定义 支持保留原文件名 支持自动生成唯一文件名 支持浏览器上传 支持查看集群文件信息 支持集群监控邮件告警 支持小文件自动合并(减少inode占用) 支持秒传 支持图片缩放 支持google认证码 支持自定义认证 支持跨域访问 极低资源支持断点续传(tus) 支持docker部署 支持一键迁移(从其他系统文件系统迁移过来) 支持异地备份(特别是小文件) 支持并行体验(与现有的文件系统并行体验,确认OK再一键迁移) 支持token下载 token=md5(file_md5+timestamp) 运维简单,只有一个角色(不像fastdfs有三个角色Tracker Server,Storage Server,Client),配置自动生成 每个节点对等(简化运维) 所有节点都可以同时读写   go-fastdfs分布式文件系统 更新日志: v1.4.2 修复图片缩放过大服务出现退出问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栈江湖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值