我正在设计一个多租户系统,考虑在应用程序层面上按租户进行分片,而不是在数据库层面上。理论上,这样应该工作的方式是:对于传入请求,路由器进程具有全局租户集合,其中包含主要属性以确定此请求的租户以及虚拟分片ID。这个虚拟分片ID进一步映射到一个实际的分片。
实际的分片包含了应用程序的代码以及此租户的所有数据。这些分片将是LNMP(Linux、Nginx、MySQL/MongoDB、PHP)服务器。
路由器进程应该充当代理。它应该能够运行一些代码,根据存储在某些本地数据库或文件中的集合来确定传入请求的目标分片。为了更好地扩展这个系统,我考虑让这些分片本身也充当路由器,以便它们可以运行反向代理,将请求转发到适当的分片。也许运行在分片上的nginx实例也可以充当这个反向代理。但是,它将如何执行所需的应用程序逻辑,以将请求与适当的分片匹配起来?
我将感激任何关于这个路由器实现的想法和建议。
谢谢!
实际的分片包含了应用程序的代码以及此租户的所有数据。这些分片将是LNMP(Linux、Nginx、MySQL/MongoDB、PHP)服务器。
路由器进程应该充当代理。它应该能够运行一些代码,根据存储在某些本地数据库或文件中的集合来确定传入请求的目标分片。为了更好地扩展这个系统,我考虑让这些分片本身也充当路由器,以便它们可以运行反向代理,将请求转发到适当的分片。也许运行在分片上的nginx实例也可以充当这个反向代理。但是,它将如何执行所需的应用程序逻辑,以将请求与适当的分片匹配起来?
我将感激任何关于这个路由器实现的想法和建议。
谢谢!