Rails 请教一个关于系统架构的问题

keyboarder · 2012年03月29日 · 最后由 keyboarder 回复于 2012年03月30日 · 2969 次阅读

请教一个该如何部署和架构的问题: 整个系统是多用户类型的,每种用户类型使用的都是单独的一个子系统。比如说包括学生用的子系统,老师用的子系统,主任用的管理系统。 整个系统用同一个数据库,部署的时候要求单独部署每个系统,这样比如学生系统改动升级的话,就不用重启教师系统。 这样的系统,如果之前用 JAVA 来实现的时候,是采用多 Moduel 的方案,即几个子系统共用 model moudel 和 service moudel,分开几个 web moudel 来开发。部署的时候,打成几个不同的 war 包来部署就好了

如果是 rails 来开发,我现在知道的是不能配置多个 moudel 那样的方案的,那么这个几个子系统,是分成几个 project 来开发好,还是在一个 project 里面开发,到时候同样的代码部署到几台服务器好呢?

请大家给点建议,谢谢!

如果仅仅是为了重启系统分开,大可不必。项目发布也就是不到 1 分钟的事情。

如果几个子系统放在一个项目里去开发,不同的界面,不同的功能,会不会显得过于臃肿,失去了简洁的美感?

我认为 Rails 的实现思路跟 Java 有所不同,可能我作习惯了 Rails 的应用,就很难想象“采用多 Moduel 的方案,即几个子系统共用 model moudel 和 service moudel,分开几个 web moudel 来开发。部署的时候,打成几个不同的 war 包来部署”

如果是我作类似的东西,我会考虑复用所有的 Model,但是不同的类型的用户在登陆后 redirect 到不同的路径下面,Controller 和 Views 可以分别开发,用不同的 controller 来对应不同的用户类型,不建议分开几个 project,这样复杂度和管理成本都太高,不利于快速开发。

#2 楼 @keyboarder 如果一个项目的子系统,功能不同,界面不同,那跟不同的项目有什么区别?

@daqing 几个子系统相互之间是有逻辑关系的,不同的用户类型对应的功能不同。比如教师可以查看学生资料,学生的反馈也可以让教师知道等。 而且是共用一个数据库。

#5 楼 @keyboarder 如果这样的话,可以把不同的子系统,部署到不同的端口,然后用 nginx 反向代理过去。比如说,example.org/teaches/...,这样的教师系统,反向代理到 3000 端口,学生系统,反向代理到 4000 端口。

升级的话,只要重启某个端口就好。

#5 楼 @keyboarder 我现在用 padrino 做和你需求差不多的项目,一个大 project 下很多给 tiny project,公用的 model 放在大 project 下...

Padrino.mount("One").to('/')
Padrino.mount("Two").to('/taobao')
Padrino.mount("Three").to('/paipai')

@mimosa 请问你在开发的时候,也是当作一个 project 来开发的吧?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号