阿里云Redis技术架构演进

蜡笔小新v 2021-07-20 04:14:21
redis 大数据技术


点击右侧关注,大数据开发领域最强公众号!
点击右侧关注,暴走大数据!

640?wx_fmt=png

本文是整理来自阿里巴巴夏周同学的分享,详细介绍了阿里云Redis的发展和现状。

Redis简介

Redis:Remote Dictionary Server,Key-Value存储系统,优点包括:

  • 易用性:丰富的数据结构支持,Module

  • 高性能:高校的数据结构设计,全内存操作

  • 可靠性:主备同步,持久化

阿里云Redis架构

整体架构

640?wx_fmt=jpeg

单节点->单机主备->集群->读写分离->同城容灾->异地多活

阿里云整体架构包含6大支撑系统:

  • HA控制系统

实例高可用探测模块,用于探测监听Redis实例运行情况。

  • 日志收集系统

进行云数据库Redis版运行情况的日志收集,包括实例慢查询日志,访问日志等。

  • 监控系统

进行Redis实例性能监控,信息的收集工作,目前包括基本信息组监控,keys组信息监控,string信息组监控等核心信息

  • 在线迁移系统

当实例所运行的物理机出现故障,在线迁移系统会根据备份系统中的备份文件进行实例重新搭建,保证业务不受影响

  • 备份系统

针对Redis实例进行备份处理,并且将生成的备份文件存储在OSS系统上进行保存。 目前Redis备份系统支持用户自定义备份设置,可临时备份并且保存7天内的备份文件。
  • 任务控制系统

Redis实例支持多中管理控制任务,如创建实例、变更配置、备份实例等,任务系统会根据用户下发的操作指令,进行灵活控制并且进行任务跟踪及出错管理。

双副本架构

640?wx_fmt=png

  • 适用场景:纯缓存,数据持久化

  • 性能:8-10w qps

  • 链路:内部SLB -> Redis

  • 访问方式:兼容所有开源客户端

  • SLA:2副本,HA高可用,秒级切换

集群双副本架构

640?wx_fmt=jpeg

  • 适用场景:数据量大,性能要求高

  • 性能:100w qps

  • 链路:内部SLB -> Redis

  • 访问方式:兼容所有开源客户端

  • SLA:分片2副本,高可用

读写分离架构

640?wx_fmt=jpeg

  • 适用场景:读多写少,超大Key,不要求强一致性

  • 优势:读写能力线性扩展;支持所有命令;对用户透明

同城容灾

640?wx_fmt=jpeg

  • 适用场景:

数据可用性高

  • 优势:用户数据双机房热备,单机房故障,业务无缝切换;机房恢复后,基于Binlog增量同步,防止流量雪崩

异地容灾+多活

640?wx_fmt=jpeg

  • 适用场景:多点读写,就近读写

  • 优势:容忍N-1机房故障;最终一致;跨地域灾备

混合存储

640?wx_fmt=jpeg

  • 适用场景:超大数据量,性能要求适中,视频直播类应用,电商类应用

  • 优势:100%兼容Redis;冷热数据分离;超高性价比

阿里云Redis内核优化

640?wx_fmt=jpeg

  • 兼容Memcache协议

  • 高可用探测

  • AOF Binlog

  • 持久化系统优化

  • 安全加密

  • IO、连接优化

640?wx_fmt=jpeg

持久化系统改造:

  • 保留历史AOF日志

  • 去除AOF Rewrite

  • 扩展AOF日志信息

640?wx_fmt=jpeg

  • 全新的数据组织形式:RDB全量+历史AOF

640?wx_fmt=jpeg

  • 基于AOF Binlog的同步机制

640?wx_fmt=jpeg

独立的端口探测线程:

  • 单独的事件

  • 主线程阻塞不受影响

  • 坏盘探测

  • 慢内存探测

  • 快速容灾

640?wx_fmt=jpeg

AOF后台异步写优化:

  • 新增biowrite模式

  • 轻量级别锁队列

  • bio线程进行线程写入操作

  • 提高性能,避免write慢对主线程的影响

640?wx_fmt=jpeg

支持Memcache协议:

  • 支持文本及二进制协议,完全兼容

  • 复用Redis String对象存储memcached

  • 复用原生Redis同步协议

  • 复用原生Redis持久化机制

  • 新版本Memcache支持扫描、备份、更多统计信息

640?wx_fmt=jpeg

混合存储优化:

  • 内存中保持所有key和热数据

  • RocksDB中存冷数据

  • 热数据性能和Redis一致

  • 100%兼容Redis

  • 数据换出异步写RocksDB,不阻塞主线程

  • 单实例支持TB+数据存储

640?wx_fmt=jpeg

网络IO多线程优化。

欢迎点赞+收藏+转发朋友圈素质三连

640?wx_fmt=jpeg640?wx_fmt=jpeg

文章不错?点个【在看】吧! ?

版权声明
本文为[蜡笔小新v]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_9928699/2893689

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云