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

2021-06-21 15:21:45 +08:00
 HDMItoDP

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

2022 次点击
所在节点    Java
12 条回复
uselessVisitor
2021-06-21 15:43:34 +08:00
注册个 bean 托管好一些吧,没用过,猜测滴。。
https://blog.csdn.net/qq_33842795/article/details/115912970
anonydmer
2021-06-21 16:07:08 +08:00
能不能复用取决于它本身是不是线程安全。 不过通常来讲这种 XXClient 一般都是
Oktfolio
2021-06-21 16:11:39 +08:00
bean
HDMItoDP
2021-06-21 16:16:59 +08:00
@anonydmer 看了下 MinioClient 内部代码,每次 new 一下,都 new 一个 OKHttpClient
Vegetable
2021-06-21 16:18:07 +08:00
HDMItoDP
2021-06-21 16:40:30 +08:00
@beichenhpy 我看网上的都是注册个 bean 的这种
X0ray
2021-06-21 16:44:40 +08:00
不用,可以做一个单例全局使用。上面提到的 bean 不就是默认 singleton 的嘛
jingslunt
2021-06-21 16:48:07 +08:00
终于有人开始讨论 minio 了
PS:minio 最近被集成进 harbor operator
qwerthhusn
2021-06-21 16:56:17 +08:00
不需要,而且不推荐。

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

HttpClient 是带连接复用的,针对 HTTP1.1 还带连接池的。你每次 new 一个 Client 去操作效率非常低,每次都要重建一个新的连接。
anonydmer
2021-06-21 17:10:48 +08:00
@HDMItoDP OKHttpClient 内部已经复用连接池了,哪怕是多个 OKHttpClient 实例;所以即使 new 了多个 MinioClient 仍然会享受 OKHttpClient 连接池的福利。 不过正如 @qwerthhusn 兄弟说的不需要也不推荐
liian2019
2021-06-21 18:09:20 +08:00
复用,java 里面都是交给 spring 托管
HDMItoDP
2021-06-22 11:43:21 +08:00
@qwerthhusn 好的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/784846

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX