服务器 频道

易信架构分享:高性能讯应用架构与实践

  【IT168 现场报道】2014年9月17日-19日,2014 中国系统架构师大会(SACC 2014)在北京五洲皇冠国际酒店盛大开幕。作为中国规模最大的架构师豪门盛会,本届中国系统架构师大会以“发现架构之美”为主题,探讨最具前瞻性的行业趋势与技术热点,分享架构在企业中的非常好的实践,共同领略架构之美。

  据了解,大会邀请了来自百度、腾讯、阿里巴巴、京东等知名互联网企业与传统行业的资深架构师,分享云架构实践与解析、大数据架构及应用、自动化运维、高性能高可用网络架构设计、互联网存储架构优化、构建全新数据中心、互联网金融及风险防范、移动平台架构设计、高效电商系统构建、全栈工程师实践等主题的最新技术实践。

易信架构分享:高性能讯应用架构与实践

  易信架构师谢骋超演讲是《高性能实时通讯应用架构与实践》,易信消息推送平台是网易重要的高并发实时通讯应用,承载着千万级的并发连接,对实时性与可靠性有很高的要求。在这个演讲中谢骋超将介绍两个平台中的架构设计、实践经验及解决方案。

  谢骋超表示——Redis-sentinel的三大功能:监测、通知、自动故障恢复。首先Redis-sentinel要建立一个监控的master列表,然后针对master列表的每个master获取监控其的sentinels和slaves供以后故障恢复使用。

易信架构分享:高性能讯应用架构与实践

  一个sentinel实例的监控master在配置文件中指定,如sentinel A在配置文件中指定管理的master ip:port列表,并且指定连接失败超时的时间和是否可以故障恢复等参数。这样,sentinel A就建立了监控的master列表。

  sentinel A作为客户端建立对其监控master 1的pub/sub连接和命令传输连接,pub/sub连接的目的是通过消息传递来获取监控master 1的所有sentinels,具体方式是订阅”sentinel:hello”频道,并这个频道publish 自己的host信息,这样,所有监控master 1的sentinels都通过订阅master 1的“sentinel:hello”频道来获取其他sentinels的信息。sentinel A就建立了master 1的sentinels列表。 sentinel A还通过间断的info命令获取master 1的slaves列表,如果连接超时或者失败,就会进入故障处理的例程。

易信架构分享:高性能讯应用架构与实践

  Redis-sentinel定义了故障的master两种状态,O_DOWN(objectively)和S_DOWN(subobjectively)。当sentinel A连接master 1失败后,sentinel A认定master 1为subobjectively状态,然后sentinel A查看监控master 1的sentinels的认定情况。因为sentinel之间会建立连接并且不断的发起info命令询问和回应,因此在sentinel A认定master 1 S_DOWN后,sentinel A通过SENTINEL IS-MASTER-DOWN-BY-ADDR命令来不断获得其他sentinel的认定情况,如果有超过quorum(配置中指定)个sentinel认定master 1已经DOWN,那么就确定master 1为O_DOWN。然后sentinel A必须有master 1的can failover权限,这也是配置文件指定的。接着,sentinel A需要得知master 1的leader sentinel,由leader来进行master 1的错误恢复。

  sentinel A作为master 1的leader,会选取一个master 1的slave作为新的master。slave的选取是根据一个判断DNS情况的优先级来得到,优先级相同通过runid的排序得到,但目前优先级设定还没实现,所以直接获取runid排序得到slave 1。

易信架构分享:高性能讯应用架构与实践

  然后发送命令slaveof no one来取消slave 1的slave状态来转换为master。当其他sentinel观察到该slave成为master后,就知道错误处理例程启动了。sentinel A然后发送给其他slave slaveof new-slave-ip-port 命令,当所有slave都配置完后,sentinel A从监测的masters列表中删除故障master,然后通知其他sentinels。

0
相关文章