Spanner 的 DatabaseClient 线程安全吗?
Is Spanner's DatabaseClient threadsafe?
我们目前正在为 Spanner 检索 DatabaseClient,如下所示:
DatabaseClient dbClient = spanner.getDatabaseClient(...)
跨多个线程使用这个 DatabaseClient 对象安全吗?具体来说,我们想要依赖注入 DatabaseClient 的一个实例,并想了解它是否是线程安全的并且可以重用,或者是否每个线程都应该调用 spanner?
这是在 Web API 服务中使用的,因此有很多对 URL 的传入请求,每个传入请求都需要一个 Spanner 连接。什么是最好的分享对象?例如,我们不希望每个会话都必须加载 Google JSON 凭证(我们假设这发生在 SpannerOptions Builder 中)。
是的,它应该是线程安全的。
DatabaseClient
是 implemented using the SessionPool
class. The note about thread-safety can be seen in the SessionPool
implementation.
我们目前正在为 Spanner 检索 DatabaseClient,如下所示:
DatabaseClient dbClient = spanner.getDatabaseClient(...)
跨多个线程使用这个 DatabaseClient 对象安全吗?具体来说,我们想要依赖注入 DatabaseClient 的一个实例,并想了解它是否是线程安全的并且可以重用,或者是否每个线程都应该调用 spanner?
这是在 Web API 服务中使用的,因此有很多对 URL 的传入请求,每个传入请求都需要一个 Spanner 连接。什么是最好的分享对象?例如,我们不希望每个会话都必须加载 Google JSON 凭证(我们假设这发生在 SpannerOptions Builder 中)。
是的,它应该是线程安全的。
DatabaseClient
是 implemented using the SessionPool
class. The note about thread-safety can be seen in the SessionPool
implementation.