1

Google 的 Go 官方 Cloud Spanner 客户端库有一个NewClient()函数,它接受Context. 通常,Contexts 作为(可能长时间运行的)请求链的一部分传递。这是否意味着要NewClient()为需要访问 Cloud Spanner 的服务处理的每个唯一请求调用它?

如果我使用的是传统的关系数据库,我会创建一个共享的客户端池,供进程多次使用,以减少资源使用(例如网络连接)。每当请求处理程序启动时创建一个独特的数据库客户端的想法对我来说有点令人反感,我想知道我是否误解了客户端库的预期用途。

另一方面,Cloud Spanner总的来说相当神奇,所以得知这实际上是一种受鼓励且有效的模式,我不会感到太惊讶。不过,很高兴知道,文档并没有真正讨论它。

4

1 回答 1

2

这是否意味着 NewClient() 旨在为需要访问 Cloud Spanner 的服务处理的每个唯一请求调用?

不。将客户端视为与数据库的连接。每个连接可以为许多请求提供服务,通常在应用程序初始化期间创建,并在应用程序关闭或不再需要数据库时关闭。

您可以拥有许多客户端(连接),因此您可以在需要时并行处理请求。

于 2017-05-09T04:17:26.563 回答