首页 > 教育学习 > 为什么 > 如何架构基于 Ruby on Rails 网站的实时消息系统?

如何架构基于 Ruby on Rails 网站的实时消息系统?
2012-01-19 20:09:11   来源:   点击:

    如何架构基于 Ruby on Rails 网站的实时消息系统?一个小型的社交网站,比如像zhihu.com那样的,用ruby on rails和mongodb做主要业务逻辑,有几个功能不知道是怎么实现的,希望能给出具体的产品名称,拿来就能用最好了:1、推送通知(pushnotification)到前台网页上,比如被人关注、话题或者问题更新、添加了回答、投票、修改等等。2、给其他用户发消息(message),或者群聊(group chat),记录能保存到mongodb里面。3、首页动态刷新(timeline feed)4、支持实时全文搜索(lucene/solr),图片/视频后台队列处理(queue)5、不仅是html5,还要支持ios、android原生客户端开发6、最好是分布式、并发的,利用多核cpu的计算能力,以后网站做大了,直接堆服务器,架构不用改。

    6 个答案

    • 答案 1:

      1 实时信息通知可以用轮询或者 Long HTTP Connection 的方式,具体查google2 message 和 group 放在mongodb 可以,比如说一个群聊放到一个 mongodb 的 document 里面,一个message 会话也可以放在一个 document 里面,但是要设计好你的数据结构,一个document最大4M。 nosql 虽然方便,但是后期sharding 也很费事3 首页动态刷新,这个参考1. 从服务器返回数据后,动态插入就可以4 实时全文搜索,但假设你用 mongodb,在一定量级上可以直接用mongodb 查询,另外对于过期数据可以做归档。以知乎现在的数据量来说,实时搜索也用不到lucene/solr。后台任务队列可以用redis。我原来尝试过用mongodb 来架构一个实时队列,支撑过一段时间,后来爆掉了。5 支持html5,移动设备。 这个不关架构的事情,只要判断浏览器请求头,对不同设备提供不同的 css,或者是渲染不同的页面。如果要是给客户端提供API的话,统一用json就行,Rails 支持不同请求类型返回不同数据结构。6 没有可以拿来就用的架构,要根据自己的业务结构,从简单开始,逐步演进。
    • 答案 2:

      这事“小型的社交网站”吗无论什么消息,都是,消息产生—— > 筛选过滤—— > 存入数据库或cache—— > 前台推送1,2,3,都是一样的原理,网页上用AJAX就可以动态刷新了,IOS,ANDROID也是同理,定时取数据就OK了全文搜索就是数据库的事情了,最好还是提取关键字搜索,像知乎这种这么多信息,全文搜索可不容易,视频和图片多分几个服务器就好了,带宽是王道,这玩意可吃钱了,你看知呼几乎没多少图片至于分布式架构,那更是因地制宜的事情了,什么网站怎么分布完全不一样,最主要的是,网站做大了,不可能不改变,那是不可能的,除非你出发点就是架构一个庞大的巨无霸
    • 答案 3:

      我觉得你需要的不是一些具体的产品,而是需要一个团队?? 你说的这些事情都不是一两个人能搞定的。特别是第 6 点,现在估计只有 Google 能做到。
    • 答案 4:

      你一下问了这么多谁有时间答阿
    • 答案 5:

      你的这么多问题,可以转换成如何用Ruby on Rails实现一个Twitter,Yammer或者新浪微博这样级别的应用,不如你把问题拆分一下,一个一个的问吧。
    • 答案 6:

      建议去zheye.org 问,知乎有耐心的用户较少。者也上的相关回答zheye.org/asks...

相关热词搜索:

上一篇:目前的情况下,你比较看好哪些还没有上市的互联网公司?
下一篇:创业早期不需要考虑盈利吗?如果是,为什么?