类似于Shopify的模板管理 - 架构建议

时间:2015-05-21 14:17:26

标签: ruby-on-rails ruby architecture

我们为社区管理制定了SAAS平台。我们被要求为每个社区提供定制的体验,最终社区管理者希望修改视图/元素位置/ css / js。经过大量研究,我们决定选择Shopify#liquidmarkup http://liquidmarkup.org/。存储这些模板的理想方式是什么?

这是我们当前的模型架构

社区has_many用户

因此社区将拥有自己的轨道“布局”/“部分”/“液体模板”。我们计划目前以这种方式将他们的布局存储在文件系统中

Rails.root>模板> community_uuid> community_specific_template_files

但是随着我们社区的扩大,我们将需要堆积太多“模板”文件夹。即使它们在MAINAPP git repo中被忽略,但在具有多个独角兽节点的app服务器上,这些模板必须在任何给定的时间点可用于任何unicorn服务器。随着社区基础在我们的App服务器上的增加,这会以指数方式增加所消耗的文件系统空间。

我们目前有3个选项

  1. 将它们存储在文件系统上,并在所有应用程序服务器上部署/更新模板 - IO操作
  2. 将模板存储在数据库中并缓存这些模板查询
  3. 将模板存储在REDIS中作为HASH结构并相应地进行检索。
  4. 想知道你的想法吗?

    由于 Vivek Sampara

1 个答案:

答案 0 :(得分:0)

  1. 感觉真的很不稳定。必须处理:

    • 同步程序启动时节点离开。
    • 节点在更新过程中关闭,它将是"半同步"并且必须在备份时重新同步。
    • 必须具有单独的进程,以便在添加新节点时触发同步过程。
  2. 你打算自己实现这个吗?还是unicorn / ruby​​有一些内置的功能来处理这个问题?

    1. 感觉就像一个更明智的解决方案。但是您总是希望将数据库查询保持在最低限度。

    2. 这是我个人更喜欢的解决方案。让专用的Redis实例像模板库一样工作。