用mysql+redis实现微博feed架构上需要注意哪些问题
来源:互联网 发布:js 定时移动鼠标 编辑:程序博客网 时间:2024/05/18 00:10
可以从架构思路上来说说,如以redis做缓存、以mysql为主、以redis为辅。
1、MySQL使用需要注意的地方
1) 存储引擎选择InnoDB,在高并发下读写有很好的表现
2) 数据合理分表分区,均衡各数据库服务器的负载
3) 适当作数据的冗余,便于在cache失效时的快速恢复
2、Redis使用需要注意的地方
1) 合理规划cache
将访问量高的热点数据统计出来、分类缓存。
对微博来说,主要有三种形式的缓存:IDs,content,page。
IDs包括各种关系的ID列表,如用户的粉丝、关注的对象、发表的新鲜事等,这些可以缓存在Redis的set或list结构中;
content包括各ID的具体信息及内容,如新鲜事的正文、用户的详细信息等,这些可以缓存在Redis的string或hash结构中;
page包括一些热点页面的部分内容或全部内容缓存,如名人主页等,这些可以缓存在Redis的string结构中。
根据以上缓存类型以及缓存的大小和过期时间,就可以规划出不同缓存如何存放、如何使用才能更高效地利用缓存的方式。
2) 缓存的压缩
在高访问量和高并发下,每一个字节的减少都是巨大的节省。
根据以上缓存类型的分析,我们可以对string结构的内容做压缩存储,如新鲜事的正文以及page cache等。
3、数据实时性与一致性
1) 实时性
在发表微博时,如果采用的是推送给粉丝的方式,为了保证快速响应,可以使用消息队列,先发表,再在后台推送。如果粉丝比较多,还可以将粉丝按照是否在线分组,通过不同队列发送。
2) 一致性
一致性主要是针对缓存与数据库中的数据不一致而言。
对于重要的数据,我们可以采取先写数据库再写缓存的方式来保证,而对于不太重要但对响应速度要求很高的数据可以采取先写缓存然后通过消息队列再写入数据库的方式。当然,需要做好错误日志记录以及能根据日志恢复数据。
本文转自互联网,在此感谢!
- 用mysql+redis实现微博feed架构上需要注意哪些问题
- 买别墅需要注意哪些问题?
- 进程切换需要注意哪些问题
- 找友情链接网站需要注意哪些问题
- 网站建设需要注意哪些问题
- 网站优化需要注意哪些细节问题?
- 留存类活动需要注意哪些问题?
- 硕士论文答辩需要注意哪些问题?
- 架构师需要解决哪些问题
- 新浪微博架构和FEED架构分析--人人架构
- 新浪微博架构和FEED架构分析--人人架构
- 新手在换友情链接链接需要注意哪些问题
- J2ME写好的应用程序打包,需要注意哪些问题?
- 社交平台中的会员等级制度建立需要注意哪些问题
- 社交平台中的会员等级制度建立需要注意哪些问题
- Spring 整合redis集群 实现 以及过程中需要注意的问题点
- MYSQL 需要注意的常规问题
- mysql 写计数器需要注意的问题
- Android ApiDemo学习(三)activity(3)
- expdp直接导出文件到NFS共享的挂载目录,报错ORA-27086: unable to lock file - already in use
- extjs表格grid功能详解
- Project 2013新报表功能
- Android测试教程
- 用mysql+redis实现微博feed架构上需要注意哪些问题
- How To Configure SSH for a RAC Installation [ID 300548.1]
- dlna简介
- IE9的奋起反击
- ISE中如何将自己的verilog源代码.v或VHDL源代码.vhd封装打包成IP核?
- nyoj 349&poj 1094 Sorting It All Out(拓扑排序)
- Android应用程序与SurfaceFlinger服务的关系概述和学习计划
- (转)VC++ 外壳扩展编程之windows右键菜单
- Eclipse快捷键大全