目前所有服务部署在两台4core/8Gb的云主机上,
架构分成四个部分,简单解释一下,分别对应图中的数字标识

moboq tech stack

  1. front-end & web server
    目前的front-end和web server放在一起,考虑到流量和成本,
    还不需要单独做软负载均衡,前面有cdn挡掉了大部分请求流量。
    Web服务器主要用的是高性能的Nginx+Passenger的组合,用来跑Ruby/Rails。
    也是目前比较流行的做法,相比Apache,Nginx更轻便灵活,以后scale out方便。

  2. common services
    公共服务目前主要是消息队列,邮件服务以及类似comet的推送服务faye。
    目前对图片存储需求不高,暂时本地,后面会使用外部云存储以分担流量和cpu计算。
    队列是delayed_job,主要起到请求缓冲作用,较慢的请求操作都会丢到队列中,比如,感谢时候发送微博。
    邮件服务部分使用了sendgrid付费服务,价格和统计服务都ok。

  3. computing core services
    是面包圈核心查找用户,推拉消息以及发送通知的模块,
    目前正在迁移一些老的Python代码,以及把微博的API升级到新版本 。
    这块主要是受到外部api的限制,本身没有高负载的请求,涉及到一些查询匹配算法,cpu计算会多一点。

  4. database & storage
    主要分两块,持久和内存存储,
    主要RDBMS存储用的mysql,担不是官方版本,oracle收购后已经表现出无力一面,
    面包圈用的是mysql创始人目前维护的maria存储引擎版本,兼容官方并且支持更高的并发和更佳性能。
    不用mangodb等nosql是因为没有看到特别亮点地方,唯一scale见长的地方,mysql的sharding操作并非困难,
    而且dw/olap做数据分析用RDB会更方便。

网站多处使用了内存缓冲,包含静态文件,rails中的cache等,这块以后会更多使用和总结。