数据底层架构-rails(二)

###用户层

HTML5的manifest,localStorage;php中的smarty,rails中的runtime机制都是在用户层来提高访问性能。

###负载均衡层

使用nginx和keepalived实现用户请求分流功能,nginx支持容错转移,如果后端的某台应用服务器失效,nginx可把该台服务器暂时移出可用列表。

同时,由于负载均衡服务器位于整个网站系统的最前端,一旦失效则整个网站立刻瘫痪,所以其重要性无与伦比。为保证高可用,使用keepalived实现双服务器的故障实时切换。

###web服务层

使用passenger为rails web服务器,passenger易于管理维护,每台服务器均发布完整的项目代码,不在功能上做分布式,以利于维护。 也可使用unicorn接收nginx的请求。

###数据库层

####mysql

使用mysql做索引存储,使用2台mysql,做master-master复制,配合keepalived实现高可用。

####缓存系统

分为一级缓存和二级缓存。一级缓存用于存储数据量不大,但对速度要求高的缓存数据。二级缓存用于存储对速度要求相对较低,但存储量巨大的数据。

一级缓存使用内存数据库redis(memcache),优点是速度快,并发高。用于存储首页缓存数据,以及配合redis-store作为rails默认页面缓存,等等。注意内存使用。

二级缓存使用文档型数据库mongodb,优点是查询功能强大,支持海量存储。用于存储部分资讯内容,提高页面响应速度。10万条,数据文件大小为4G。

文件系统。

使用glusterfs,以其自身的机制可实现双机热备和单台服务器失效返回后文件的自动同步。用户上传的文件会自动地同时保存于2台glusterfs服务器上。对应用程序来说,它们只是将文件保存于本地某个指定目录,glusterfs对应用是透明的。而且任何一台服务器单独失效都不会对用户产生可察觉的影响,失效的服务器返回后,glusterfs会计算2台服务器所保存文件的差别,对改动过的文件进行同步。

参考: http://seamon.iteye.com/blog/1058510

--EOF--

声明:若无特别说明,本站文章均为原创,转载请保留链接,谢谢

Published: 2013-02-18
blog comments powered by Disqus