BDRP-个人学习总结

BDRP(baidu distributed redis platform)是基于twemproxy的redis集群解决方案,目前有1.0和2.0架构,已经在github上开源,本文依然是从网络上找的一些资料并加入自己的理解,方便自己复习。

1、1.0架构


twemproxy:对redis请求进行路由转发,通过pubsub功能同步sentinel中的后端redis信息,增加了用户白名单和流量控制的功能。

redis:redis采用的是2.6.16版本,将2.8版本中的增量复制功能merge进来,提高替换时候的可用性。

sentinel:监控redis故障,如果redis master故障,会自动进行故障替换,并给twemproxy同步替换结果。

2、2.0架构

由于社区的sentinel主要是用于故障替换,只存储当前redis master的信息,如果想对集群进行更精细的控制,比如读写分离、扩容,必须保存更详细的集群信息,因而增加了meta-server组件代替了sentinel,meta-server在redis的基础上开发,能够保存更详细的信息,并支持一些控制命令的处理。

twemproxy:增加了读写分离,因为meta-server通知的后端信息不但有redis-master,还有redis-slave以及部署的位置,因而可以基于位置做读写分离,将一些读请求路由到同机房的redis-slave上,但这样会牺牲数据一致性。

redis:为了方便扩容,merge了3.0版本的slot功能,BDRP的数据迁移是基于slot的,用子线程dump整个slot的数据,然后将数据发送给目标shard上面,改进了社区的基于key的迁移策略,减少了大量的控制命令,提高了迁移的效率,但是在迁移的时候,迁移的slot是只读的,不算是平滑的。数据balance的策略主要是基于shard的容量,统计所有shard的容量,找到最大值,最小值和平均值,如果最大值和最小值相差不大,则不进行balance,对所有shard做不完全排序,查找一个大于平均值并且没有迁移的shard,再查找一个小于平均值并且没迁移的shard,从两个shard中random一个slot进行迁移。

meta-server:基于redis开发,保存了cluster,proxy,shard的信息,支持主从切换,推送配置。

master:协调各个组件工作,对实例进行故障探测,自动化管理集群。

3、其它

另外BDRP还做了redis&mysql的融合工作。基于databus&broker,proxy基于mysql命令进行智能路由,后端通过databus&broker自动进行mysql到redis的同步,对用户无感,用户使用mysql协议访问后端存储服务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Redis集群方案 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis...
    jiangmo阅读 628评论 0 3
  • sentinel:上一篇提到了主从切换,sentinel的作用是将这个过程自动化,实现高可用。它的主要功能有以下几...
    米刀灵阅读 7,715评论 0 6
  • 转发:Redis Cluster探索与思考 Redis Cluster的基本原理和架构 Redis Cluster...
    meng_philip123阅读 3,621评论 0 14
  • 亲爱的七宝,李劼珅: 我是爸爸,再过几天,你就整整一百天了,在中国传统的风俗文化中,这是个大日子!标...
    豫鲁阅读 453评论 1 3
  • 琴弦控制着心跳 你被激怒,那边的国不能复存 溪水渴了,去山脚闯荡 王控制了情绪,铺开鹰的归途 上帝设下精心的陷阱 ...
    _山川_阅读 537评论 0 3