芒果 TV Redis 服务解决方案
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 服务解决方案相关推荐
- 使用JRedis时无法连接Liunx下Redis服务解决方案
解决远程连接Redis的时候出现以下的问题导致无法连接: java.io.IOException: 远程主机强迫关闭了一个现有的连接. java.io.IOException: 您的主机中的软件放弃了 ...
- Codis——分布式Redis服务的解决方案
Codis--分布式Redis服务的解决方案 参考文章: (1)Codis--分布式Redis服务的解决方案 (2)https://www.cnblogs.com/chenny7/p/5063368. ...
- Redis服务停止报错解决方案[NOAUTH Authentication required]
Redis服务停止报错解决方案[NOAUTH Authentication required] 参考文章: (1)Redis服务停止报错解决方案[NOAUTH Authentication requi ...
- Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案
Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案 参考文章: (1)Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案 (2)http ...
- 互联网晚报 | 12月23日 星期四 | 芒果TV将上调会员价格;小红书宣布月活达2亿;荣耀首款折叠旗舰荣耀MagicV官宣...
今日看点 ✦ 小红书举办2022商业生态大会,官宣月活用户已达2亿 ✦ 持续上探高端之作,荣耀首款折叠旗舰荣耀Magic V即将发布 ✦ 金山办公发布数字办公平台,全面赋能大型组织办公数字化转型 ✦ ...
- 华为云CDN为芒果TV加速,打造丝滑“追剧观综”的观看体验
华为云CDN为芒果TV加速,打造丝滑"追剧观综"的观看体验 芒果,不仅在水果类中怎么爱都不嫌多,在综艺界的名头也是响当当.作为全国综艺的扛把子-芒果TV, 芒果TV坐拥过亿注册用户 ...
- 阿里云跨界合作芒果TV看明星也用云计算
本文讲的是阿里云跨界合作芒果TV看明星也用云计算跨年晚会哪家强?当然是有"鲜肉收割机"之称的芒果台.但大家只知道芒果台明星多.鲜肉多,却不知道芒果台也有独门黑科技. 2016湖南卫 ...
- 互联网快讯:高德打车创新推出上车点AR导航;猿辅导推智能练习本聚焦教育智能硬件;芒果TV宣布将上调会员价格
国内要闻 湖南税务邀请张艺兴担任"湖南税务纳税服务宣传大使": 小红书举办2022商业生态大会,官宣月活用户已达到2亿: 开源操作系统社区OpenCloudOS成立,共建国产操作系 ...
- 阿里云跨界合作芒果TV 粉丝看明星也用云计算
跨年晚会哪家强?当然是有"鲜肉收割机"之称的芒果台.但大家只知道芒果台明星多.鲜肉多,却不知道芒果台也有独门黑科技. 2016湖南卫视跨年晚会直播,芒果TV联合阿里云深度合作,把晚 ...
- 老树新花:芒果TV林喆谈C++11选型与应用
林喆是芒果TV的系统工程师.在10月15日~17日的QCon上海2015大会上,他将分享<C++11核心特性简析>,结合实际项目经验,分享一下他对C++11一些新特性的理解和应用.在大会开 ...
最新文章
- C语言函数知识体系大学霸IT达人
- canvas写的一个刮奖效果
- SQL Server 2012 Managed Service Account
- aptio setup utility怎么设置u盘启动_CentOS 7下载及系统U盘制作
- 连连看java代码_连连看 - java代码库 - 云代码
- switch 根据键盘录入成绩 显示分数及判断等级(第三次)
- EIGRP的successor与fessible successor
- java三件套_Java开发人员应该知道的三件事
- JS中的兼容问题总结
- 使用WebService与Oracle EBS进行集成(上)
- kafka manager 2.0 工具下载 已打包完成
- PyTorch 1.0 中文文档:torchvision.datasets
- 微服务权限控制(二)共享Session方式的登录认证
- python 串行线程终止后还会执行下一个吗_多线程笔记
- 配置ArcGIS Server使用Windows AD Windows集成身份认证
- SaaS 真实的案例, DRP
- 超级好用的whatsapp协议
- matlab z变换 差分,用matlab绘制差分方程Z变换
- crout分解计算例题_吃透高考数学17个必考题型,基础再差也能考130!(内附解题技巧+例题解析)...
- Python-字符串的判断、拆分和拼接