【发布时间】:2021-02-09 11:09:46
【问题描述】:
我预计这是一个常见问题,但找不到明确的答案。 场景如下:
- 您在容器中部署了一个微服务应用程序。每个微服务都部署在自己的容器中,并且可以独立于其他微服务进行垂直/水平扩展。
- 其中一个微服务需要连接到像数据库这样的服务。您可以使用首选客户端库连接到该特定数据库,使用微服务应用程序内的连接池。
- 您的应用程序是弹性的,这意味着它应该根据一些工作负载指标进行伸缩,并在需要时部署/删除容器。
现在问题来了。您的数据库只能接受有限数量的连接,比如说 100。还说您需要数据库连接的微服务有一个最大限制为 10 的连接池。这意味着您的微服务实际上无法横向扩展超过 10 个容器,否则您可以超过数据库支持的最大连接数。 理想情况下,您希望独立于数据库连接限制来扩展服务,在容器集群中拥有某种状态池服务,该服务知道当前活动的连接总数。
上述情况有哪些可能的解决方案?
【问题讨论】:
标签: database containers microservices connection-pooling