Database 是否应该在每个请求上创建一个新的Cloud Paner客户端实例?

Database 是否应该在每个请求上创建一个新的Cloud Paner客户端实例?,database,go,google-cloud-platform,google-cloud-spanner,Database,Go,Google Cloud Platform,Google Cloud Spanner,谷歌官方的Go云扳手客户端库有一个NewClient()函数,该函数接受上下文。通常,Contexts作为(可能长期运行的)请求链的一部分传递。这是否意味着NewClient()将针对需要访问云扳手的服务处理的每个唯一请求进行调用 如果我使用传统的关系数据库,我会创建一个共享的客户端池,供进程多次使用,以减少资源使用(例如网络连接)。每当请求处理程序启动时创建一个独特的数据库客户机的想法让我有点不快,我想知道我是否误解了客户机库的预期用途 另一方面,云扳手一般来说是相当神奇的,所以当我知道这实际

谷歌官方的Go云扳手客户端库有一个
NewClient()
函数,该函数接受
上下文。通常,
Context
s作为(可能长期运行的)请求链的一部分传递。这是否意味着
NewClient()
将针对需要访问云扳手的服务处理的每个唯一请求进行调用

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

另一方面,云扳手一般来说是相当神奇的,所以当我知道这实际上是一种鼓励和有效的模式时,我不会感到太惊讶。尽管如此,很高兴能确切地知道,而医生们并没有真正地讨论它

这是否意味着NewClient()要为每个 由需要访问云的服务处理的唯一请求 扳手

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

您可以有多个客户端(连接),以便在需要时并行处理请求