Redis 高可用架构最佳实践( 三 )


缺点:

  • 架构比较新 , 最佳实践较少
  • 多键操作支持有限(驱动可以曲线救国)
  • 为了性能提升 , 客户端需要缓存路由表信息
  • 节点发现、reshard 操作不够自动化
7、Twemproxy
Redis 高可用架构最佳实践文章插图
Twemproxy
From:
多个同构 Twemproxy(配置相同)同时工作 , 接受客户端的请求 , 根据 hash 算法 , 转发给对应的 Redis 。
Twemproxy 方案比较成熟了 , 之前我们团队长期使用此方案 , 但是效果并不是很理想 。 一方面是定位问题比较困难 , 另一方面是它对自动剔除节点的支持不是很友好 。
优点:
  • 开发简单 , 对应用几乎透明
  • 历史悠久 , 方案成熟
缺点:
  • 代理影响性能
  • LVS 和 Twemproxy 会有节点性能瓶颈
  • Redis 扩容非常麻烦
  • Twitter 内部已放弃使用该方案 , 新使用的架构未开源
8、Codis
Redis 高可用架构最佳实践文章插图
Codis
From:
Codis 是由豌豆荚开源的产品 , 涉及组件众多 , 其中 ZooKeeper 存放路由表和代理节点元数据、分发 Codis-Config 的命令;Codis-Config 是集成管理工具 , 有 Web 界面供使用;Codis-Proxy 是一个兼容 Redis 协议的无状态代理;Codis-Redis 基于 Redis 2.8 版本二次开发 , 加入 slot 支持 , 方便迁移数据 。
优点:
  • 开发简单 , 对应用几乎透明
  • 性能比 Twemproxy 好
  • 有图形化界面 , 扩容容易 , 运维方便
缺点:
  • 代理依旧影响性能
  • 组件过多 , 需要很多机器资源
  • 修改了 Redis 代码 , 导致和官方无法同步 , 新特性跟进缓慢
  • 开发团队准备主推基于 Redis 改造的 reborndb
四、最佳实践
所谓的最佳实践 , 都是最适合具体场景的实践 。
主推以下方案:
  • Redis Sentinel 集群 + 内网 DNS + 自定义脚本
  • Redis Sentinel 集群 + VIP + 自定义脚本
以下是实战过程中总结出的最佳实践:
  • Redis Sentinel 集群建议使用 >= 5 台机器
  • 不同的大业务可以使用一套 Redis Sentinel 集群 , 代理该业务下的所有端口
  • 根据不同的业务划分好 Redis 端口范围
  • 自定义脚本建议采用 Python 实现 , 扩展便利
  • 自定义脚本需要注意判断当前的 Sentinel 角色
  • 自定义脚本传入参数:
  • 自定义脚本需要远程 ssh 操作机器 , 建议使用 paramiko 库 , 避免重复建立 SSH 连接 , 消耗时间
  • 加速 SSH 连接 , 建议关闭以下两个参数
  • UseDNS no
  • GSSAPIAuthentication no
  • 微信或者邮件告警 , 建议 fork 一个进程 , 避免主进程阻塞
  • 自动切换和故障切换 , 所有操作建议在 15s 以内完成
你们公司用的哪种方案 , 欢迎留言区评论~
- END -
PyTorch 中文版官方教程来了 。
PyTorch 是近年来较为火爆的深度学习框架 , 然而其中文版官方教程久久不来 。 近日 , 一款完整的 PyTorch 中文版官方教程出炉 , 读者朋友可以更好的学习了解 PyTorch 的相关细节了 。 教程作者来自 pytorchchina.com 。
教程网站:
如果不想自己下载 , 请通过下面方式获取pdf资料:
回复「pytorch」获取pdf和代码