近期项目组准备投入大量资源重推一个Web系统,无奈该系统一年内经过了大概四波开发者的断断续续开发,没有办法应付预期的巨大访问量和并发,遂决定开发2.0版本,目标是能抗住巨大的预期访问量。
既然项目组想要投入大量资源,那么申请服务器的时候,配置绝对是不会差的,而且审批的也是神速,一台大内存的刀片机用来做Redis服务器,这也就是这次2.0版本的关键改进之处--Redis持久缓存层。
附:这里如果Redis服务器的硬盘换成SSD固态硬盘的话,那效率会进一步提升。
利用Redis做缓存服务器,好处是不会像MemCached那样无法持久化,另一方面内部有队列模式,可以为业务开发过程带来方便。
Redis缓存分三级:
1.原子级缓存(用户实体,文章实体,等等)
2.用户级缓存
3.页面级缓存(特定页使用)
举例说明,如果页面中需要显示文章明细列表,则先从页面级缓存中加载文章ID列表数据,然后再内存中循环文章ID加载原子缓存中文章详情,然后返回文章明细列表至前端显示。
页面级缓存直接又后台服务生成数据插入Redis中,每日做数据快照即可。
业务中能丢到后台服务队列异步处理的全部丢队列处理,可以使用Redis的队列进行队列数据记录。
2.0项目采用的是.net mvc4开发,数据接口多使用JsonResult返回数据,这时候前端的交互采用了近期熟悉的MVVM框架:KnockOut.js
使用KO的好处显而易见,对于前端开发同事给过来的静态页,直接拷进IDE中,然后不需要改动DOM结构,直接在标签中加入data-bind绑定数据、绑定事件,然后专注于处理和服务端的数据交互,维护好当前页面的KO的ViewModel,可以节省很多体力和脑力去和DOM做交互。
当然计划赶不上变化,就在打算好好大干一场的时候,项目组决定不做2.0版本了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。