对具体实现感兴趣的同学可以查看本文末尾参考资料 。
Sharded-pubsub
Redis自2.0开始便支持发布订阅机制 , 使用pubsub命令族用户可以很方便地建立消息通知订阅系统 , 但是在cluster集群模式下Redis的pubsub存在一些问题 , 最为显著的就是在大规模集群中带来的广播风暴 。
Redis的pubsub是按channel频道进行发布订阅 , 然而在集群模式下channel不被当做数据处理 , 也即不会参与到hash值计算无法按slot分发 , 所以在集群模式下Redis对用户发布的消息采用的是在集群中广播的方式 。
那么问题显而易见 , 假如一个集群有100个节点 , 用户在节点1对某个channel进行publish发布消息 , 该节点就需要把消息广播给集群中其他99个节点 , 如果其他节点中只有少数节点订阅了该频道 , 那么绝大部分消息都是无效的 , 这对网络、CPU等资源造成了极大的浪费 。
Sharded-pubsub便是用来解决这个问题 , 意如其名 , sharded-pubsub会把channel按分片来进行分发 , 一个分片节点只负责处理属于自己的channel而不会进行广播 , 以很简单的方法避免了资源的浪费 。
Client-eviction Redis支持内存规格配置 , maxmemory和maxmemory-policy大家已经都很熟悉了 , 但是在这里我还是想再解释一下:maxmemory控制的是Redis的整体运行内存而非数据内存 , 例如client buffer、lua cache、fucntion cache、db metadata等这些都会算在运行内存中 , 如果运行内存超过了maxmemory就会触发evict删除数据 , 这也是用户在使用Redis时的一大痛点 。
在这些非数据内存使用当中 , 又以client buffer消耗最大 , 在大流量场景下client需要缓存很多用户读写数据(想象一下keys的结果需要先缓存在client output buffer中再发送给用户) , 由于网络流量的内存消耗导致触发eviction删除数据的情况非常之多 。 虽然Redis很早就支持对client-output-buffer-limit配置项 , 但其限制的也只是单个连接维度的output buffer , 没有全局统计client使用内存和限制 。 为了解决这个问题 , 7.0新增了maxmemory-clients配置项 , 来对所有client使用的内存做限制 , 如果超过了这个限制就会挑选内存消耗最大的client释放 , 用来缓解内存使用的消耗 。
Client-eviction并不是终点 , 还有很多元数据的内存使用会对用户造成困扰 , Redis是基于内存的数据库 , 我们需要对各个模块的内存进行更精确的统计和控制 , 让用户能够对数据存储有更为清晰的理解和规划 。
Redis历史回顾 Redis发展至今已历经7个大版本 , 而每个大版本都有大量的新特性产生 。 例如从3.0开始支持cluster集群模式;4.0开发的lazyfree和PSYNC2解决了Redis长久的大key删除阻塞问题及同步中断无法续传的问题;5.0新增了stream数据结构使Redis具备功能完整的轻量级消息队列能力;6.0更是发布了诸多企业级特性如threaded-io、TLS和ACL等 , 大幅提升了Redis的性能和安全性 。
国内开发者与Redis社区建设 感谢国内开发者 , 中国区已经成为Redis社区最大的贡献来源之一
阿里云从Redis 4.0开始就深度参与到Redis开源社区当中 , 向社区贡献了大量能力 , 目前阿里云在Redis社区共有1名core team member(核心维护者)和2名contributor(核心贡献者) , 是原作者和Redis Labs以外对Redis社区贡献最大的组织 。
我们见证了Redis用户在国内的快速增长 , 阿里云与Redis社区的深度合作也逐渐吸引了更多的国内开发者参与到Redis建设中去 。 尤其是在Redis core team成立之后 , 社区maintainer也和Redis一样变成了多线程(1-5) , 对于issue和PR的快速处理大幅提升了社区的活跃度 。 这次7.0的release note中也可以看到已经有超过5名国内开发者贡献了核心feature , 并贡献了近半数commit 。
- 荣耀手机独立出华为后|从3699跌至2059荣耀太猛了
- 本文转自:央广网央广网兰州12月13日消息(记者邸文炯)记者从兰州大学获悉|第四届中国研究生人工智能创新大赛圆满落幕
- 47 岁从华为退休,操作系统老兵转战 OpenHarmony 生态 | 近匠
- 5G|多款取暖器双十二价格比平时高,平台客服:价格波动遵从商家意愿,不违反规定
- 工业互联网|早期项目|从泰国到东南亚,「 MagiCart」为千万中小卖家提供一站式跨境采购服务
- 阿里巴巴|借老罗的光?李诞直播首秀创佳绩:首销超3200万!
- 算法|外卖行业的下滑,或许是平台从放弃“算法”的那一刻起!
- 阿里巴巴|华为小米智能手表新品接连上线,OPPO Watch 3系列地位还稳吗?
- 苹果|iPhone用户入手小米12S Ultra后自称无法自拔:彻底从果粉变成了米粉
- 欧盟委员|欧盟从2023年起限制食品中四种“永久化学物质”含量
