Rails缓存架构设计

Rails缓存架构设计

ID:46276702

大小:3.60 MB

页数:57页

时间:2019-11-22

Rails缓存架构设计_第1页
Rails缓存架构设计_第2页
Rails缓存架构设计_第3页
Rails缓存架构设计_第4页
Rails缓存架构设计_第5页
资源描述:

《Rails缓存架构设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、高性能Web应用缓存架构设计浅谈RobbinFan高性能Web应用特征•大规模,高并发的访问请求•服务的高可用性•平滑的deployment•良好的可伸缩性特殊应用场景•长连接•Webchat,Webgame•网络IO资源消耗型,非CPU消耗型•EventMachine,Twisted,Node.js高性能Web应用是架构问题,不是Rails框架问题ConstraintislibertyJavaEye统计数据•3,000,000+Railsdynamicrequestsperday•15,000,000+HTTPrequestsperd

2、ay•600+HTTPrequests/sonpeaktime•1,000,000+full-textsearchperday•1400+currentconnections/sonpeaktime•600averageMemcachedgetoperations•150averageSQLqueriespersecondWebServerDBServerlighttpdanalyticsmysqlfastcgi(ruby)PDFCreatingmemcachedSearchServerWebServerDBServerCPUPeak<

3、60%CPUPeak<25%IOWait<5%IOWait<15%Rails高性能Web之道•从整体架构上设计各个层面缓存方案•消除架构上的各个单点性能瓶颈•多进程的分布式应用架构部署•以REST的架构风格来编写Rails应用基于Web的简单架构浏览器Web服务器应用服务器数据库操作系统的文件系统Web应用架构存储设备Web系统的速度差异•读取文件系统>读取存储设备•读取数据库内存>读取文件系统•读取应用内存>访问数据库服务器•读取静态文件>访问应用服务器•读取浏览器缓存>访问网站缓存系统的分层架构•操作系统磁盘缓存:减少磁盘机械操作•

4、数据库缓存:减少文件系统I/O•应用程序缓存:减少数据库查询•Web服务器缓存:减少应用服务器请求•客户端浏览器缓存:减少对网站的访问操作系统文件缓存•文件系统提供的DiskCache:操作系统会把经常访问到的文件内容放入到内存当中,由文件系统来管理•当应用程序通过文件系统访问磁盘文件的时候,操作系统从DiskCache当中读取文件内容,加速了文件读取速度•DiskCache由操作系统来自动管理,一般不用人工干预,但应当保证物理内存充足,以便于操作系统可以使用尽量多的内存充当DiskCache,加速文件读取速度•特殊的应用程序对文件系统

5、DiskCache有很高的要求,会绕开文件系统DiskCache,直接访问磁盘分区,自己实现DiskCache策略•Oracle的rawdevice(裸设备)–直接抛弃文件系统•MySQL的InnoDB:innodb_flush_method=O_DIRECT数据库缓存的重要性•为什么数据库非常依赖缓存?•数据库通常是企业应用系统最核心的部分•数据库保存的数据量通常非常庞大•数据库查询操作通常很频繁,有时还很复杂•以上原因造成数据库查询会引起非常频繁的磁盘I/O读取操作,迫使CPU挂起等待,数据库性能极度低下•数据库有哪些缓存策略?•Qu

6、eryCache•DataBuffer对象缓存•由O/RMapping框架例如ActiveRecord提供,透明性访问,细颗粒度缓存数据库查询结果,无需业务代码显式编程,是最省事的缓存策略•当软件结构按照O/RMapping框架的要求进行针对性设计,使用对象缓存将会极大降低Web系统对于数据库的访问请求•良好的设计数据库结构和利用对象缓存,能够提供极高的性能,对象缓存适合OLTP应用应用缓存概述•对象缓存•查询缓存•页面缓存•动态页面静态化(pagecache)•页面片段缓存(frgmentcache)•基于REST资源的缓存Activ

7、eRecord缓存•cache_fu•cache_money•second_level_cachecache_money•出自twitter开发团队之手•可能是目前最强大的rubycache框架•支持分页查询缓存,支持条件查询缓存山寨cacheplugin•基于RailsCache的简单封装,仅60行代码•可以自动实现对象缓存的管理,n:1关系的缓存,但不支持1:n集合缓存•memcached缓存命中率超过96%对象缓存的威力•OLTP类型的web应用,由于应用服务器端可以进行群集水平扩展,最终的系统瓶颈总是逃不开数据库访问;•哪个框架

8、能够最大限度减少数据库访问,降低数据库访问压力,哪个框架提供的性能就更高;•针对数据库的缓存策略:•对象缓存:细颗粒度,针对表的记录级别,透明化访问,在不改变程序代码的情况下可以极大提升web应用的性能。对

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。