2012-04-04 42 views
2

我希望得到关于Rails 3应用程序体系结构的一些意见。Rails 3应用程序的体系结构想法

目前我们有一个Rails 3.0.7应用程序,允许用户通过我们连接的媒体设备管理在电视上显示的内容(促销,视频,菜单,体育统计等)。我们有超过1000个(和越来越多)这些连接的设备每分钟轮询我们的系统以检查其内容的变化,并且每15分钟报告其统计数据(例如,CPU,内存等)。

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

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

我在考虑某种类型的队列机制很适合像resque/redis,因为当更改在内容管理。系统,我们可以排队设备实例可以拿起并处理的作业。

我想抛弃这个问题给社区,以便从其他可能已经工作或仍在使用连接设备的系统工作的人那里获得意见和想法。预先感谢您的贡献。我很感激!

Louis

回答

0

1000+客户需要约1个需求。每分钟听起来不像负载,需要对正常操作进行架构更改。一般来说,简单的单应用程序架构从长远来看将更容易维护,所以您应该坚持下去,直到遇到无法解决的问题。

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

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

+0

嗨亚历克斯,谢谢你的回应! 当我们的系统发生变化,影响所有连接的设备时,Web服务调用设备进行更新的CPU和数据库密集型。这就是说我认为我们需要分开数据库。考虑到读/写比率,我们认为主/从可以很好地工作。将它与两个应用程序(管理员和设备)结合在一起,在这两个应用程序中,两个应用程序分别从slave/master读取/写入,然后我期待更好的性能,更不用说改进的体系结构。 我没想过高速缓存代理服务器。这是一个有趣的想法。 – lgates 2012-04-06 14:02:24