【发布时间】:2025-12-10 06:15:02
【问题描述】:
以下代码sn-ps的性能有什么区别?
用例:使用 Couchbase 反应式 SDK 从 Couchbase 检索多个键。
片段 #1
return Observable
.from(keys)
.flatMap(id ->
bucket.get(id, RawJsonDocument.class)
)
.toList()
.toBlocking()
.single();
片段 #2
List<Observable<RawJsonDocument>> list = new ArrayList<>();
keys.forEach(key -> list.add(bucket.get(key, RawJsonDocument.class)));
return Observable.merge(list)
.toList()
.toBlocking()
.single();
第一个sn-p是根据CB的documentation.推荐的方式
此外,在最后,可观察对象被转换为阻塞对象, 但在那之前的一切,包括网络调用和 聚合,是完全异步发生的。
在 SDK 内部,这提供了更有效的资源利用 因为请求很快存储在内部请求中 RingBuffer 和 I/O 线程能够选择与 他们能。之后,无论服务器首先返回结果,它都是 存储在列表中,因此没有响应序列化 开。
第二个 sn-p 是我们今天在代码库中发现的一个案例,其中有一个 Observable 列表,其中每个 observable 都会一个一个触发 Bucket 的 get 方法,然后将它们全部合并。
【问题讨论】:
标签: java performance rx-java couchbase couchbase-java-api