在金字塔中托管多个域

时间:2016-11-24 15:16:02

标签: python mongodb virtualhost scalability pyramid

我正在尝试使用金字塔设计SaaS应用。客户将能够设计他们的应用程序方面,他们的方面应该能够通过应用程序提供。

为了使事情更容易理解,让我们举例说,我们想要创建一个电子商务SaaS应用程序。用户应该能够在应用程序中创建自己的电子商务网站,然后根据需要从应用程序使用自己的fqdn访问它。

据我所知,我们需要解决至少两个问题,可能还需要解决第三个问题:

  1. 具体请求涉及哪个fqdn。
  2. 如何区分每个不同fqdn的静态资产。
  3. 如何为每个fqdn连接到不同的数据库。
  4. 问题(1)可以使用request.domain(或request.hostrequest.host_url等方式轻松解决,就视图和路线而言(我认为)。不过,我不确定如何处理(2)(3)。我提到(3)的原因是因为我认为横向扩展(每个不同的fqdn都有单独的数据库)比垂直扩展(拥有一个带有巨大的表/集合的数据库)更好whatevers包含所有fqdns的数据。)

    此外,请记住,我们的应用程序应该能够在多应用程序服务器设置上生存,这意味着如果需要在一个应用程序服务器上调用配置功能,例如,动态更新视图,然后托管相同应用程序的其他应用程序服务器也应该以某种方式了解此配置更改。

    有关如何解决这些问题的任何想法(请举例说明)或有关此应用程序架构如何变得更具可扩展性和易于开发的任何建议都非常感谢!

    提前全部谢谢!

    修改 好吧,我想到了一个" hack"在不使用配置中的任何静态视图的情况下为每个不同的fqdn生成不同的视图。我还没有发布黑客作为自我回复,因为它对我来说似乎并不优雅;但是,如果我没有更好的解决方案,没有人提出更好的解决方案,我会发布它:)。

    一般的想法是创建一个视图(不是静态视图),它将使用*stararg(例如config.add_route('my_static_view', '/static/*subpaths')来处理静态资产的静态路径及其路线(例如config.add_route('my_static_view', '/static'))。

    我们还需要一个同一范围内的static_view对象(让我们称之为static_view_obj),用于提供我们的静态内容(我们不需要重新发明轮子,我们将使用金字塔satic_view的功能来为我们的静态资产提供服务。在我们的my_static_view函数中,我们可以更改static_view_obj的内容,为每个不同的request.domain提供不同的静态路径。

0 个答案:

没有答案