Skip to content
/ oss Public

一个兼容s3协议、filesystem、webhdfs(kerberos+pseudo)的oss对象存储项目,支持spring-boot。

License

Notifications You must be signed in to change notification settings

Kestrong/oss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ebb23ee · Mar 21, 2024

History

21 Commits
Jul 18, 2023
Mar 21, 2024
Mar 21, 2024
Mar 21, 2024
Dec 2, 2020
Dec 2, 2020
Aug 28, 2023
Mar 21, 2024
Dec 2, 2020
Dec 2, 2020
Dec 2, 2020
Dec 2, 2020

Repository files navigation

oss

一个支持s3/minio/fusion storage/ceph/webhdfs协议的对象存储和文件系统操作sdk,支持spring-boot的starter方式配置和启动,简化开发的流程。同时也提供了rest接口方便调测。

模块介绍

  • oss-sdk

基础模块,提供s3和文件系统的操作接口,内部适配了s3、minio、fusion storage、ceph、filesystem、webhdfs等多种存储服务的接口,可以自由拓展。

  • spring-boot-starter-oss

支持spring-boot的配置,简化配置和提高开发效率。

  • oss-application

提供rest接口,通过swagger访问。地址:http://{ip}:{port}/{context}/swagger-ui/index.html

快速开始

这里以spring-boot为例。

  • 添加依赖
    compile 'com.xjbg:spring-boot-starter-oss:${oss-version}'
    <dependency>
        <groupId>com.xjbg</groupId>
        <artifactId>spring-boot-starter-oss</artifactId>
        <version>${oss-version}</version>
    </dependency>
  • 配置文件
oss:
  enable: true #是否启用 默认true
  defaultApiType: minio #默认的api类型 可选[s3,minio,fusion,ceph,filesystem,webhdfs]
  baseDir: / #filesystem的基准目录 如不需要可以去掉该属性
  clientConfig:
    useHttps: false #是否开启https 默认false
  minio: #选择对应的api类型
    defaultBucket: temp #默认bucket 不需要可以不配置
    url: http://play.min.io #服务地址
    accessKey: Q3AM3UQ867SPQQA43P2F
    secretKey: zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
    enable: true #是否启用minio 默认false
    autoCteateBucket: false #是否启用自动创建bucket 默认false
  • 接口使用
    @Autowired
    protected OssTemplate ossTemplate;
    
    //三种方式获取api后直接使用需要的接口
    OssApi ossApi = ossTemplate.fileApi();// 显式指定
    OssApi ossApi=ossTemplate.api();//使用配置文件指定的默认类型
    OssApi ossApi=ossTemplate.api(ApiType.MINIO);// 根据类型获取
    //先创建bucket才能操作文件和目录
    ossApi.makeBucket(bucket);
    //上传文件
    try (InputStream inputStream = new FileInputStream(new File(directory))) {
        PutObjectArgs putObjectRequest = PutObjectArgs.builder()
                .bucket(bucket)
                .object(object)
                .contentLength(inputStream.available())
                .contentType(contentType)
                .inputStream(inputStream)
                .build();
        PutObjectResponse response = ossApi.putObject(putObjectRequest);
        log.info("putObject:{}", JSON.toJSONString(response));
    }

更多代码示例请查看测试用例

注意事项

  • webhdfs使用的是okhttp进行rest调用,其它满足s3协议的使用aws-java-sdk调用(底层为http-client)
  • s3协议的bucket为存储桶,命名规则为[a-zA-Z0-9.-]{3,63},为了方便使用内部会自动取'/'或'\'的第一级作为bucket,剩下的部分会拼接到object的前面
  • 使用https时webhdfs需要配置SSL_CERT_FILE其他类型需要配置javax.net.ssl.keyStorejavax.net.ssl.keyStorePasswordjavax.net.ssl.keyStoreType系统变量(System Property,例如通过Java -D启动命令指定)
  • 严格控制好目录和文件的命名,避免文件、目录之间命名冲突导致未知的异常
  • 例子(linux系统):
    • 文件 bucket:tmp object:log/oss.log result: /tmp/log/oss.log

参考文档

  1. s3官方文档
  2. webhdfs官方文档

About

一个兼容s3协议、filesystem、webhdfs(kerberos+pseudo)的oss对象存储项目,支持spring-boot。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages