为了保证查询的速度,他们用redis来保存用户数据的索引信息,下面是它们使用redis的方式及扩展方法:

1、一共是16台redis数据服务器,每台服务器是96G内存,这样一共是1.3T的内存容量

2、每台服务器有16个核,每台机器上运行了160个redis实例(因为一个redis实例最多只能占用一个核,所以需要跑多个实例来充分利用机器的资源)

3、同一份数据会复制到另外两台机器上,采用redis自带的数据复制机制对数据进行复制。写到主redis实例上,轮询读取写实例和另外两个读实例

4、另外有几台机器上面也运行redis实例,以保存实例IP地址、实例端口、负责的数据位置、健康状态信息。它们管这个叫目录服务。也是采用redis的数据复制机制复制目录信息到多个目录redis实例上。

5、目录服务大部分是读取,修改的情况比较少,所以读写比例非常高。应用程序采取轮询的方式轮流访问主目录实例和多个辅目录实例

6、当应用程序发现一个实例没有响应,它会去修改该实例对应的目录信息,将健康状态标专为离线,这样别的应用和实例都不会再去访问出问题的实例

7、当数据分片对应的辅redis实例出错离线时,该分片对应的数据仍然能够正常读取,只是冗余性下降了

8、当数据分片对应的主redis实例出错离线时,该分片对应的数据只能提供读取服务,数据不能再被修改

9、运行了一个特殊的代理进程,它不断查询目录节点,当发现有一个分片的主redis实例离线时,由它来推动从剩下的辅redis实例中选举一个做新的主redis实例,并配置别的实例是它的辅redis实例,然后再清掉分片对应的目录信息,从只读模式中恢复成读写模式。这个过程还没有做到完全的自动化,他们有计划做到完全自动地恢复

10、所有redis数据服务器用单独的网卡接到专用的网络中,里面有网络存储,这样所有redis实例会定时将数据快照存到网络存储上

11、因为redis保存数据快照需要额外的内存,具体数据跟写的比例和io速度有关系,这样如果一台redis数据服务器上的所有实例同时都写快照,这样会因内存的占用而影响服务。为了避免这个问题,他们的作法是在每台redis数据服务器运行一个单独的进程,轮流访问上面的每个实例,调用save命令来保存快照

12、采用一致性哈希算法按用户邮件名,将用户索引数据分片到对应的redis实例上。具体是用sha1算法将邮箱名64位无符号整数空间内按实例数平均分配64位空间,每个实例占用相同的区间大小。用sha1计算用户邮箱对应的数值,按顺时针方面寻找最近的实例,由该实例负责对应的用户

13、他们对比多个哈希函数,最后选定sha1,因为它能均匀分布用户到多个redis实例上

14、当增加新的实例时,它会占据在两个实例的中间位置。但不是从老的实例中搬移数据到新的节点上。当一个实例没有对应的数据时,会按顺时针方向转发请求到下一个实例

15、当一个实例内存已经用满,它也会按顺时针方向转发请求给下一个实例

16、在应用端会缓存用户对应的实例信息,这样避免每次都进行上面的定位和转发步骤

17、没有使用libredis(采用了ketama)原因是自己写的方式比较好一步一步地跟踪,同时能解决redis环境下的特定的问题

18、一致性哈希采用C++实现,另外用了一些tcl脚本。开源了Redis C++客户端库, 计划把一致性哈希实现也发到这个开源客户端中

转载于:https://www.cnblogs.com/chyong168/archive/2012/10/12/2721365.html

转:redis实践经验分享相关推荐

  1. 大促场景系统稳定性保障实践经验分享

    简介:11月11日0点刚过26秒,天猫双11的订单创建峰值就达到58.3万笔/秒,阿里云又一次扛住全球最大规模流量洪峰!58.3万笔/秒,这一数字是2009年第一次天猫双11的1457倍. 每到双11 ...

  2. AutoML前沿技术与实践经验分享 | 免费公开课

    传统机器学习的解决范式可表示为: ML Solution = ML expertise + Computation + Data 新机器学习范式可表示为: New ML Solution = 100x ...

  3. AutoML前沿技术与实践经验分享 | 免费报名

    传统机器学习的解决范式可表示为: ML Solution = ML expertise + Computation + Data 新机器学习范式可表示为: New ML Solution = 100x ...

  4. 领域驱动设计(DDD)的实践经验分享之持久化透明

    领域驱动设计(DDD)的实践经验分享之持久化透明 原文:领域驱动设计(DDD)的实践经验分享之持久化透明 前一篇文章中,我谈到了领域驱动设计中,关于ORM工具该如何使用的问题.谈了很多我心里的想法,大 ...

  5. 云计算架构师分享:容器云在金融企业的落地方案 | 周末送资料(原题:某保险公司容器云PaaS平台建设实践经验分享)

    [摘要]随着技术和社区的成熟,容器.Kubernetes.微服务等新事物不再只是概念,已在很多企业落地并发挥了生产力,对容器和PaaS的需求也从试探性转向规模化推广和纵深探索,建设企业级容器PaaS平 ...

  6. 手段-目的理论定性研究实践经验分享

    手段-目的理论定性研究实践经验分享 -公司型项目需要尽可能高效率的定性研究,选取方法前必须对时间人力成本做出准确评估. -需要有分析方案,事先统一标准:初期需要多沟通,确保标准达成一致. -多人对同一 ...

  7. 对话中国人寿:DevOps实践经验分享

    对话中国人寿:DevOps实践经验分享 视频文字实录 霍艳明 中国人寿财产保险股份有限公司测试负责人 Q:请问贵公司主要进行了哪些DevOps的有效实践,采用了哪些工具? A:现在我们用的是Jira这 ...

  8. IT项目管理实践经验分享

    其实我本来是想找PMP考友的,但是无人应征,又看到版主的号召,所以就贴个实践经验分享贴,也找点志同道合者交流交流实践经验吧. 我的msn ccjjgg79310@msn.com Email ccjjg ...

  9. Spark SQL在携程的实践经验分享

    本文根据张翼老师在2018年5月13日[第九届中国数据库技术大会]现场演讲内容整理而成. 讲师简介: 张翼,10年互联网老兵;2015年3月加入携程,携程的大数据平台技术总监,带领团队构建稳定,高效的 ...

最新文章

  1. 为什么电气自动化学历不高只能进厂?
  2. 一步一步学Silverlight 2系列(35):升级Silverlight 2 Beta 1应用程序到Beta 2
  3. 20180316 数组查询时间复杂度
  4. 普通程序员,几个月如何成功转型AI?
  5. (特征检测)检测角点opencv--python
  6. 白领职场必懂的22条潜规则(转载)
  7. 扫雷打开的初始区域递归_Python:游戏:写一个和 XP 上一模一样的“扫雷”!
  8. Mac电脑硬件温度控制:TG Pro
  9. Wireshark实战分析之TCP协议(二)
  10. 微信小程序设置web-view的业务域名
  11. SAP中货架寿命控制功能的简单测试分析
  12. Python爬取王一博高清图片,竟然如此简单!
  13. 22-3-批量对excel文件重命名
  14. 项目开发-工具-版本控制Git完整系统化使用说明
  15. android ftp 链接不上去,安卓手机无法连接电脑上的ftp(vsftpd)服务器
  16. 常见积分和导数的推导
  17. 运维人必备:日志分析工具日志易之银行业解决方案
  18. Webpack 4教程:为什么要优化代码
  19. arp病毒系列——攻击类型
  20. 一些代码和心得记录我的成长经历

热门文章

  1. 苹果二手机价格行情2022.2.22
  2. c语言传奇引擎源码,Ei3.0服务端引擎源代码+登陆网关+客户端插件
  3. 今天推荐一下网友张迪的博客
  4. 一种可扩展的同时进化实例和特征选择方法
  5. 102-首发URSINA中文入门指南-打开山河社稷图
  6. python单词怎么读-python单词如何读
  7. 【NOIP2013模拟】粉刷匠
  8. android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating
  9. 阿里巴巴2014校园招聘算法题
  10. seo整站优化详细教程下载