当前位置: 首页 > 知识库问答 >
问题:

Rails 3应用程序的架构思想

施英哲
2023-03-14

我希望得到一些关于我们的Rails 3应用程序架构的意见。

目前,我们有一个Rails 3.0.7应用程序,允许用户通过我们的一个连接媒体设备管理电视上显示的内容(促销、视频、菜单、体育统计等)。我们有1000多台(而且还在增长)这样的连接设备,它们每分钟轮询我们的系统,检查其内容的变化,每15分钟报告其状态(例如CPU、内存等)。

我们系统的主要优点之一是,作为管理员,我们可以改变单个内容项的外观/工作方式,并将其分发给所有使用它的设备。这个功能的缺点是,当我们做出改变时,我们的系统会暂时无法使用,因为所有连接的设备几乎同时要求更新。

因此,我们计划重新构建我们的应用程序,这样当设备与应用程序通信时,内容管理系统就不会受到影响。可能有几十种方法来解决这个问题。一种方法是有一个单独的Rails应用程序,它只供设备获取它们应该显示的内容,管理员可以监控等等。它可以与当前的内容管理系统共享模型、数据库等。这种方式可能很难管理模型、迁移等。我显然不想复制模型。此外,如果内容管理系统仍然可以显示帐户的设备状态,以便帐户管理员可以看到他们的设备是否在线等,这将是理想的。

我认为某种类型的队列机制是一个很好的适合,比如resque/redis,因为当在内容管理系统中进行更改时,我们可以将设备实例可以拾取和处理的作业排队。

我想把这个扔给社区,从其他可能已经或仍在使用利用互联设备的系统的人那里获得意见和想法。提前感谢你的贡献。我很感激!

路易斯

共有1个答案

闻慎之
2023-03-14

1000个客户机,约1个请求。每分钟的每一次听起来都不像是需要改变架构才能正常运行的负载。一般来说,从长远来看,简单的单应用架构更容易维护,所以你应该尝试坚持,直到出现无法解决的问题。

如果性能/响应性是主要问题,为什么不在堆栈中添加缓存代理服务器呢?

另一个简单的选择是在两台服务器上安装应用程序,一台用于管理,另一台用于客户端设备。请注意,只有当数据库不是瓶颈时,这才有帮助。

 类似资料:
  • 这里我们提供了一个关于 Tendermint 区块链应用程序推荐架构的简要指南。 下图提供了一个极好的例子: 这里的最终用户应用程序是 Cosmos Voyager,在左下角。 Voyager 与本地轻客户端守护进程公开的 REST API 通信。轻客户端守护进程是一个特定于应用程序的程序,它与 Tendermint 节点通信,并通过 Tendermint Core RPC 验证 Tendermi

  • CodeIgniter应用程序的体系结构如下所示。 如图所示,每当请求到CodeIgniter时,它将首先转到index.php页面。 在第二步中, Routing将决定是将此请求传递到步骤3以进行缓存还是将此请求传递到步骤4以进行安全检查。 如果请求的页面已经在Caching ,则Routing将把请求传递给步骤3,响应将返回给用户。 如果Caching中不存在请求的页面,则Routing会将请

  • 问题内容: 是否有与之相对应的Java应用程序体系结构指南:http : //www.codeplex.com/AppArchGuide? 问题答案: 以下内容将对您有所帮助 核心J2EE模式 头先设计模式 J2EE蓝图 尽管快速浏览了Codeplex上的文档,但我可以告诉您,其中可能有70-80%的内容也适用于Java。

  • 问题内容: 请提供有关如何为Java Web应用程序执行“插件”体系结构的建议。 当前,我们在Tomcat servlet容器中使用了非常简单和标准的Spring + Hibernate + Struts 2 。(内置Maven) 我需要像Redmine 这样的东西。可以启用/禁用,更新任何模块的位置Redmine UI 请排除OSGi,Portlet等繁重的选项。 OSGi太重,没有很好地采用W

  • 问题内容: 我一直在为我的新工作学习Zend及其MVC应用程序结构,发现与它一起工作只会使我感到困扰,原因是我无法完全动手。然后在学习过程中,我遇到了诸如MVC:NoSilverBullet之类的文章,以及有关MVC和Web应用程序的播客。播客中的那个人非常反对将MVC作为Web应用程序体系结构,并钉住了很多困扰我的东西。 但是,问题仍然存在,如果MVC并非真的很适合Web应用程序,那是什么? 问

  • null 此外,EntityManager的作用域应该是请求(或会话或方法)吗? 谢谢,克里西