这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」
前言
今天是参与2022年首次更文挑战的第28天,继续学习Redis的相关知识,参考文章,Redis在微博的应用场景。
Redis在微博的应用场景
Redis在微博内部分布在各个应用场景,比如粉丝数、用户数、阅读数、转评赞、评论盖楼、广告推荐、音乐榜单等等都用到了Redis。
业务、规模、挑战
线上的业务比如信息流、广告、用户关系等,还有大家比较感兴趣的热搜,引爆阅读量的话题,以及视频,微博大大小小的业务都用到了Redis。
- 线上规模方面,微博有100T+存储,1000+台物理机,10000+Redis实例。
- 挑战是每天有万亿级的读写,线上的响应事件要求较高。(例如:部署资源是跨机房部署,但有一些业务部门连跨机房部署存在的多余两毫秒的延迟都要投诉反馈)。
- 成本压力也很大,因为线上有大量需求是上T的。
技术选型
(这是从上面参考的文章里找来的图),可以看到这里面不仅仅包含Redis等NoSQL,还有队列、存储等等。
做过的优化
从2010年开始,他们就基于官方版本的2.0版本引进Redis,主要做了以下这些方面的改进:
- Redis的编码格式,在特殊场景下可以节省30%的空间
- 主从库方面有独立的复制线程;
- 定制化一些数据结构,比如:LongSet 数据结构,它是一个“固定长度开放寻址的 Hash 数组”,减少Redis dict 很多额外的指针开销;
- 在主从复制方面,独立复制线程 + 完全增量复制,这样的话,如果网络主从临时断了,只要从当前的pos点同步数据就行;
- 在持久化方面,是全量的RDB加增量的AOF复制;
- AOF写入/ 刷盘,主线程—>BIO,避免了因为写入导致的阻塞;
- 落地时间,不可控—>cronsave可控;
- 增加aofnumber,设置AOF数量,避免因为写入过快,磁盘写满;
- 高可用, Redis的HA并没有用官方的或者社区开源的,用的是自己开发的一套Redis HA,保障在故障的情况下,能快速进行切换。
综述
更多细节大家可以去看上面提到的参考文章~