Google 的 Go 官方 Cloud Spanner 客户端库有一个NewClient()
函数,它接受Context
. 通常,Context
s 作为(可能长时间运行的)请求链的一部分传递。这是否意味着要NewClient()
为需要访问 Cloud Spanner 的服务处理的每个唯一请求调用它?
如果我使用的是传统的关系数据库,我会创建一个共享的客户端池,供进程多次使用,以减少资源使用(例如网络连接)。每当请求处理程序启动时创建一个独特的数据库客户端的想法对我来说有点令人反感,我想知道我是否误解了客户端库的预期用途。
另一方面,Cloud Spanner总的来说相当神奇,所以得知这实际上是一种受鼓励且有效的模式,我不会感到太惊讶。不过,很高兴知道,文档并没有真正讨论它。