2019独角兽企业重金招聘Python工程师标准>>>

简介

芒果 TV 的 Redis 服务解决方案大体上分为两个部分: 以 Python 为主要开发框架的 Web 应用程序 Redis-ctl, 及以 C++11 为开发语言的轻量数据代理程序 cerberus. 对于使用开发者而言, 在机器上直接部署一组 Redis 集群节点, 然后在 Redis-ctl 上注册这些节点并组建集群; 接下来启动一个 cerberus 程序, 即可通过 cerberus 使用缓存服务. 此外, Redis-ctl 还包括一个轮询进程, 用于监测各节点的基本信息, 如 CPU, 内存, 连接数等.

相对于旧有的应用自带单节点 redis 的做法, 此方案有如下优势

  • 首先, 采用集群替代单节点作为缓存容器, 一方面能提高总体缓存容量 (不再受限于单机内存容量), 另一方面也能提高可用性 (利用集群自有的主从切换故障恢复)
  • 在此基础上, 集群代理程序的自动请求分发/重试机制使得应用不必修改自身代码或更新 Redis 库
  • 集群的扩容/缩容特性使得对机器的使用更加灵活, 并且减少浪费. 简而言之, 可以在内存达到阈值再加入新 Redis 节点, 而不用重启应用或 Redis 等, 保持服务中的任何一环都能持续工作
  • 为所有 Redis 节点, 代理节点加上统一管理和状态监测, 可以查阅历史数据, 或在发生任何问题之后快速响应修复
  • 整体可用性提高, 对于 Redis 节点来说, 前述的主备切换令单点故障不成为问题; 而代理进程的无状态性使之可在故障后快速恢复, 不影响后端集群数据完整性
  • 作为一个 bonus, 由于集群在处理请求时会将运算分散到各个节点上, 所以在高并发的情况下集群的指令处理速度会显著超过单节点

整体结构

其中 Redis-trib 为 Redis-ctl 的一个子项目, 是 Python 直接操作 Redis 集群的 API 库.

Redis 节点可以分散在多台机器上, 主从节点亦可在不同机器上, 如此即使一台机器偶然整机故障, 仍可以通过其他机器上的从节点获取数据.

而 Redis-ctl 可以运行于任何只要能连接 Redis 节点的机器上, 轮询程序会至少 10 秒采集一次单节点数据, 因此不需要很高的带宽. 只要节点加入 Redis-ctl 就会自动开始状态轮询.

Cerberus 代理程序

因为目前 Redis 集群要求连接的客户端为 "聪明客户端", 即在客户端就能够针对集群的槽位分布进行请求分发或重试, 在这方面有些语言的库 (如 Java 的 Jedis) 实现较为完备, 但有些就惨不忍睹了. 而即使有较好的实现, 在使用集群时仍需要修改程序固有代码, 对各个项目组造成负担. 故我们决定开发一个轻量级的数据分发代理.

关于这部分的详细信息见此处.

Redis-Ctl

现阶段的 Redis-ctl 程序集成了 Redis 节点管理, 集群管理. 在页面上便能看到各个节点的基本信息.

甚至可以在页面上发送组建/扩容集群操作 (测试中).

此外, 项目中还包含一个守护进程程序, 独立于主进程, 专司对节点, cerberus 的状态监测 (通过发送 info 指令到 Redis 节点或 proxy 指定到 cerberus), 并将采集的数据整合发送到 influxdb, 以便用户查阅节点的历史状态.

转载于:https://my.oschina.net/neuront/blog/377568

芒果 TV Redis 服务解决方案相关推荐

  1. 使用JRedis时无法连接Liunx下Redis服务解决方案

    解决远程连接Redis的时候出现以下的问题导致无法连接: java.io.IOException: 远程主机强迫关闭了一个现有的连接. java.io.IOException: 您的主机中的软件放弃了 ...

  2. Codis——分布式Redis服务的解决方案

    Codis--分布式Redis服务的解决方案 参考文章: (1)Codis--分布式Redis服务的解决方案 (2)https://www.cnblogs.com/chenny7/p/5063368. ...

  3. Redis服务停止报错解决方案[NOAUTH Authentication required]

    Redis服务停止报错解决方案[NOAUTH Authentication required] 参考文章: (1)Redis服务停止报错解决方案[NOAUTH Authentication requi ...

  4. Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案

    Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案 参考文章: (1)Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案 (2)http ...

  5. 互联网晚报 | 12月23日 星期四 | 芒果TV将上调会员价格;小红书宣布月活达2亿;荣耀首款折叠旗舰荣耀MagicV官宣...

    今日看点 ✦ 小红书举办2022商业生态大会,官宣月活用户已达2亿 ✦ 持续上探高端之作,荣耀首款折叠旗舰荣耀Magic V即将发布 ✦ 金山办公发布数字办公平台,全面赋能大型组织办公数字化转型 ✦ ...

  6. 华为云CDN为芒果TV加速,打造丝滑“追剧观综”的观看体验

    华为云CDN为芒果TV加速,打造丝滑"追剧观综"的观看体验 芒果,不仅在水果类中怎么爱都不嫌多,在综艺界的名头也是响当当.作为全国综艺的扛把子-芒果TV, 芒果TV坐拥过亿注册用户 ...

  7. 阿里云跨界合作芒果TV看明星也用云计算

    本文讲的是阿里云跨界合作芒果TV看明星也用云计算跨年晚会哪家强?当然是有"鲜肉收割机"之称的芒果台.但大家只知道芒果台明星多.鲜肉多,却不知道芒果台也有独门黑科技. 2016湖南卫 ...

  8. 互联网快讯:高德打车创新推出上车点AR导航;猿辅导推智能练习本聚焦教育智能硬件;芒果TV宣布将上调会员价格

    国内要闻 湖南税务邀请张艺兴担任"湖南税务纳税服务宣传大使": 小红书举办2022商业生态大会,官宣月活用户已达到2亿: 开源操作系统社区OpenCloudOS成立,共建国产操作系 ...

  9. 阿里云跨界合作芒果TV 粉丝看明星也用云计算

    跨年晚会哪家强?当然是有"鲜肉收割机"之称的芒果台.但大家只知道芒果台明星多.鲜肉多,却不知道芒果台也有独门黑科技. 2016湖南卫视跨年晚会直播,芒果TV联合阿里云深度合作,把晚 ...

  10. 老树新花:芒果TV林喆谈C++11选型与应用

    林喆是芒果TV的系统工程师.在10月15日~17日的QCon上海2015大会上,他将分享<C++11核心特性简析>,结合实际项目经验,分享一下他对C++11一些新特性的理解和应用.在大会开 ...

最新文章

  1. C语言函数知识体系大学霸IT达人
  2. canvas写的一个刮奖效果
  3. SQL Server 2012 Managed Service Account
  4. aptio setup utility怎么设置u盘启动_CentOS 7下载及系统U盘制作
  5. 连连看java代码_连连看 - java代码库 - 云代码
  6. switch 根据键盘录入成绩 显示分数及判断等级(第三次)
  7. EIGRP的successor与fessible successor
  8. java三件套_Java开发人员应该知道的三件事
  9. JS中的兼容问题总结
  10. 使用WebService与Oracle EBS进行集成(上)
  11. kafka manager 2.0 工具下载 已打包完成
  12. PyTorch 1.0 中文文档:torchvision.datasets
  13. 微服务权限控制(二)共享Session方式的登录认证
  14. python 串行线程终止后还会执行下一个吗_多线程笔记
  15. 配置ArcGIS Server使用Windows AD Windows集成身份认证
  16. SaaS 真实的案例, DRP
  17. 超级好用的whatsapp协议
  18. matlab z变换 差分,用matlab绘制差分方程Z变换
  19. crout分解计算例题_吃透高考数学17个必考题型,基础再差也能考130!(内附解题技巧+例题解析)...
  20. Python-字符串的判断、拆分和拼接

热门文章

  1. D3.js学习(一)
  2. Hash和Bloom Filter
  3. 收藏 | 关于Mac Dock的10 个隐藏终端命令
  4. SoundMorph Dust for Mac(双耳环绕音频颗粒合成仪)
  5. 教你如何关闭Mac电脑的Microsoft AutoUpdate弹框提示
  6. ubuntu server 18.04 和 20.04 安装 RabbitMQ
  7. iOS APP 比较版本号,检测更新
  8. JVM常用的配置参数整理
  9. SpringBoot读取配置文件
  10. jquery04-animate