V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HDMItoDP
V2EX  ›  Java

在 minio 中, MinioClient 需要每次 new 一个吗?还是复用?

  •  1
     
  •   HDMItoDP · 161 天前 · 1063 次点击
    这是一个创建于 161 天前的主题,其中的信息可能已经有所发展或是发生改变。

    if (minioClient == null) { minioClient = new MinioClient(endpoint, port, accessKey, secretKey, false); }

    第 1 条附言  ·  160 天前
    9 楼正解
    12 条回复    2021-06-22 11:43:21 +08:00
    beichenhpy
        1
    beichenhpy   161 天前
    注册个 bean 托管好一些吧,没用过,猜测滴。。
    https://blog.csdn.net/qq_33842795/article/details/115912970
    anonydmer
        2
    anonydmer   161 天前
    能不能复用取决于它本身是不是线程安全。 不过通常来讲这种 XXClient 一般都是
    Oktfolio
        3
    Oktfolio   161 天前
    bean
    HDMItoDP
        4
    HDMItoDP   161 天前
    @anonydmer 看了下 MinioClient 内部代码,每次 new 一下,都 new 一个 OKHttpClient
    HDMItoDP
        6
    HDMItoDP   161 天前
    @beichenhpy 我看网上的都是注册个 bean 的这种
    X0ray
        7
    X0ray   161 天前
    不用,可以做一个单例全局使用。上面提到的 bean 不就是默认 singleton 的嘛
    jingslunt
        8
    jingslunt   161 天前
    终于有人开始讨论 minio 了
    PS:minio 最近被集成进 harbor operator
    qwerthhusn
        9
    qwerthhusn   161 天前
    不需要,而且不推荐。

    这个 SDK 跟很多类似 AWS,阿里云的 SDK 一样,其实就是 HttpClient 套一层。(就是说你可以完全用原生的 HttpClient 做出完整的 Minio 请求,只不过会非常复杂。。尤其是阿里云系的,不用 SDK 很难自己能构造出正确的请求,老是签名错误,而且文档上的说的含糊不清)

    HttpClient 是带连接复用的,针对 HTTP1.1 还带连接池的。你每次 new 一个 Client 去操作效率非常低,每次都要重建一个新的连接。
    anonydmer
        10
    anonydmer   161 天前
    @HDMItoDP OKHttpClient 内部已经复用连接池了,哪怕是多个 OKHttpClient 实例;所以即使 new 了多个 MinioClient 仍然会享受 OKHttpClient 连接池的福利。 不过正如 @qwerthhusn 兄弟说的不需要也不推荐
    liian2019
        11
    liian2019   161 天前
    复用,java 里面都是交给 spring 托管
    HDMItoDP
        12
    HDMItoDP   160 天前
    @qwerthhusn 好的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1092 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 21:28 · PVG 05:28 · LAX 13:28 · JFK 16:28
    ♥ Do have faith in what you're doing.