PostgreSQL“数据库每客户”云服务的水平缩放

我正在寻找为应用程序层提供数千个PostgreSQL数据库的最佳方法。 每个数据库都用于特定的客户。
目标是:
1.在最less的硬件上提供尽可能多的数据库(降低成本)
2.支持横向扩展(所以随着更多的客户join,我可以添加更多的服务器)。
3.在服务器之间移动数据库以平衡设置。
4.能够根据资源消耗进行计费。

我的想法是:
1.在Docker中运行的专用PostgreSQL服务器中运行每个客户数据库
2.运行单个群集服务多个数据库并使用数据库缩放选项。

如果人们可以分享其他的select或任何经验与上述之一,我会感激。
换句话说,实现上述目标的最好方法是什么?