历经16年猪八戒网如何成功实现双活流量架构

标签: 猪八戒 成功 双活 | 发表时间:2021-11-26 18:30 | 作者:翔宇
出处:http://weekly.dockone.io

猪八戒网随着业务访问量的直线增长,用户增长达到一定规模后,同时面临着高并发业务和海量数据的挑战,传统单机房在服务器容量上存在瓶颈,而且在一些不可预知场景下,导致整个网站出现故障,例如机房断电、火灾等这些不可抗拒因素都会导致所有服务器出现宕机从而导致业务瘫痪,即使有备份,恢复业务花费的时间也比较长。所以公司根据实际业务情况选择了同城双活流量高可用架构,当然还有两地三中心、异地多活等方案。 本文主要基于同城双活流量叙述猪八戒网这16年的双活流量架构演进之路。

初期

2014年前猪八戒网的服务器都是托管于传统IDC机房,虽然业务应用、基础组件、数据库等都设计了高可用模式,但是避免不了机房宕机导致整个网站出现故障的问题。如图1:

图1:单点机房

直到2015年初的时候,由于机房人员日常维护的时候,不小心把我们的核心交换机网线碰松了,然后导致整个猪八戒网打不开,我们通过各种排错才定位到这个问题,经过此事件后,上层领导高度重视网站的可用性问题,为了解决机房不可控的因素,所以2015年中旬开始建设备用机房,解决机房单点问题。(注:当时基础组件及业务应用不具备双活条件,只支持主备架构模式)如图2。

优点:
  • 主机房发生故障时,通过DNS解析到备用机房,解决机房单点故障问题;
  • 主备架构模式简单,持久化数据异步同步到备用机房,不用考虑脑裂问题。


缺点:由于备用机房平时处于空闲状态,造成大量资源浪费问题。

图2:同城主备

中期

经过1-2年的迭代,大概在2017年的时候,随着基础组件的升级改造,例如:数据库、缓存、队列、对象存储、配置中心等都支持了双活流量架构模式,然后业务应用纷纷改造适配双活流量架构模式。终于我们可以把网站域名同时解析到2个机房了。如图3:

图3:同城双活(基于DNS的双活)

基于DNS切换流量模式还是有瑕疵的,在猪八戒网运行了3年左右,在此期间多次出现某机房不稳定事件进行全局流量切换,主要问题体现在某些DNS服务器不跟着协议走,导致切换流量生效时间慢,流量切换不彻底的问题。

提示:一般情况我们遇到的单个机房故障,主要体现在基础组件、业务大面积瘫痪等问题上,不涉及到入网流量的问题,假如真的是入网流量异常了,也只有等DNS解析生效了。

鉴于以上遇到的问题,我们换个思路解决如何快速切换流量,最终方案是在HTTPS层的Nginx(ngx_lua)代理服务器实现快速动态分流的功能(项目为:Signpost),为什么采用ngx_lua?因为ngx_lua在猪八戒网稳定运行5年+,不管是开发效率及性能,Lua有着天然的优势,语言表达能力也更强,而且ngx_lua是同步非阻塞(100% non-blocking)的,再次感谢章亦春 (agentzh)大佬的开源作品lua-nginx-module。如图4:

图4:HTTPS代理层分流

如何基于ngx_lua设计动态分流功能呢?简单通俗一点就是如何快速动态切换Nginx的upstream进行分流而不执行nginx reload。关于Upstream是如何动态生成的?请查阅上篇:《 猪八戒网Nginx的动态服务发现演进之路

首先管理人员配置分流策略到CMDB系统中,然后CMDB同步到Redis缓存,当用户请求时,Nginx接受到请求后,先从worker缓存获取分流策略,如果worker缓存没有,就到lua_shared_dict缓存获取,如果lua_shared_dict也没有,那就到Redis中读取,然后依次缓存,根据匹配的分流策略执行指令。假如没有获取到分流策略,那就按照默认策略分流。如图5:

图5:动态切换Upstream架构

为什么会有三级缓存?因为worker缓存支持数据结构缓存,而且没有锁竞争,lua_shared_dict缓存有锁竞争,不支持数据结构存储,Redis缓存需要TCP连接消耗,最终都是为了性能!

现在

经历了数月的开发及基础架构改造,终于在2020年9月初,基于HTTPS层的Nginx(ngx_lua)快速动态分流的功能成功上线了,主要支持了全局模式、单域名模式的流量切换,还额外支持了域名动态HTTP/HTTPS协议切换。如图6 - 9:

图6:同城双活(基于NGX_LUA的Signpost)


图7:双活流量控制台


图8:单域名切换功能


图9:单域名切换日志

最后,关于Signpost软件的主要特性,支持多活流量管理,根据不同维度进行分流,例如:IP段、地区、Cookie、浏览器、GET参数等,流量切换可以精确到秒级,而且全程用户零感知。

原文链接: https://mp.weixin.qq.com/s/6crbquRkYZPiICVdzVqkxQ

相关 [猪八戒 成功 双活] 推荐:

历经16年猪八戒网如何成功实现双活流量架构

- - DockOne.io
猪八戒网随着业务访问量的直线增长,用户增长达到一定规模后,同时面临着高并发业务和海量数据的挑战,传统单机房在服务器容量上存在瓶颈,而且在一些不可预知场景下,导致整个网站出现故障,例如机房断电、火灾等这些不可抗拒因素都会导致所有服务器出现宕机从而导致业务瘫痪,即使有备份,恢复业务花费的时间也比较长. 所以公司根据实际业务情况选择了同城双活流量高可用架构,当然还有两地三中心、异地多活等方案.

成功與失敗

- 大碗 - Mr. Jamie 看網路與創投
這兩天讀到 Cisco (思科) 全球大裁 1 萬人的新聞,心裡不勝唏噓. 想當年,正當第一次達康熱潮時,Cisco、Sun、Oracle 和 EMC,被合稱為「新經濟四劍客」(Four Horsemen of New Economy),當人家在瘋蛋塔,他們剛好在賣烤箱,根本就是門穩賺不賠的生意,多麼風光.

成功贵有恒

- yonbin - 褪墨
褪墨系列:每次一个故事,从心开始,打造心理资本系列. 犹太人说,有人的地方,就必有活路. 即使前后左右都不行,头顶上也许会有出路. 命运就在脚下,人的双脚会引导你走向想要去的地方. 犹太民族是一个多灾多难的民族,长期饱受蹂躏、放逐、杀戮,面对一次次灭绝之灾,他们在挣扎中流亡,在苦难中生存. 在他们的生存史上,无处不飞扬着血泪、流浪和苦难,他们像空气一样遍布世界各地,有近1900年时间,没有自己的国土,流离失所.

成功五要素

- Tyler - 译言-每日精品译文推荐
艾琳娜·妮可缇娜十分震惊,“因为不知道这些基本的原理,我觉得我过去对成功的努力和尝试都浪费了”她回忆说. “我之前竟然一直没发现他们,简直是疯了”. 她正在谈论她的新书-《成功五要素》:“所有的事情刚开始的时候,都有一些规则和要素,当我们掌握了,就会发现它们的效用. “如果你非常非常想要某样东西,那么你会得到它.

饿了么异地双活数据库实战

- -
本文根据 GOPS2017·上海站演讲《饿了么异地双活数据库实战》整理发布. 虢国飞,饿了么 DBA负责人. 从事数据库行业10+年,专注于MySQL、PgSQL、MSSQL等数据库领域的管理、研究和平台的研发等工作,目前负责饿了么数据库团队的管理和数据库维护方面的工作. 我今天分享是饿了么在数据库和多活数据库这块的实战经历,供大家参考.

异地多活(异地双活)实践经验 - CSDN博客

- -
异地多活(异地双活)是最近业界讨论比较多的话题,特别是前一阵子支付宝机房光纤故障和携程网数据库丢失之后,更加唤起了技术人员们对异地容灾的考虑. 而异地多活比异地容灾更高一级,因为异地容灾仅仅是一个冷备的概念,而异地多活却是指有两个或者多个可以同时对外服务的节点,任意一个点挂了,也可以迅速切换到其他节点对外服务,节点之间的数据做到准实时同步.

异地双活的四个误区 - 旁观者 - 博客园

- -
郑昀(老兵笔记) 20190305. 阿里云华北二机房2019年3月3日凌晨服务中断长达三小时,我在微博上喊出了:工程师赶紧起床,切多活流量啊. 多年前,大家往往做成了灾备机房,一主一备. 结果是,真正灾难发生的时候,最高领导人下不了决心切机房,因为无法预料切换后果(灾难总是不期而遇,切过去就可能切不回来了).

再谈异地双活容灾部署(6.24)

- - 人月神话的BLOG
对于数据库异地双活容灾部署在前面博客上也有文章谈到过,这篇文章做一些进一步的分析,对于异地双活容灾推荐阅读下网上的一篇文章,这篇文章介绍的比较全面,可以重点参考,本文配图也来源于该文. 文章链接: https://dbaplus.cn/news-21-646-1.html. 对于异地双活,前面我很多文章都已经谈到过,实际上最难的就是数据库如何保证双活,大部分的异地容灾方案数据库本身都是单活的,一个做为备份库.

配置双活网络切换技术 - ericnie - 博客园

- -
因配置多数据中心的时候遇到如何进行生产以及备份的切换,阅读此文受益匪浅,转载保留. 应用级灾备要求提供冗余的网络线路和设备. 正常情况下,客户端通过生产中心的业务网络访问生产中心的应用服务器;在发生灾难时,通过网络切换,客户端能够访问到灾备中心的备用服务器. 目前,网络切换技术主要有以下三种:. 生产中心和灾备中心主备应用服务器的IP地址空间相同,客户端通过唯一的IP地址访问应用服务器.

做人不成功,成功是暂时的;做人成功,不成功也是暂时的。

- jason - 河蟹娱乐
1、人生最重要的不是努力,不是奋斗,而是抉择. 2、老板只能给一个位置,不能给一个未来. 3、意外和明天不知道哪个先来. 没有危机是最大的危机,满足现状是最大的陷阱. 4、所见所闻改变一生,不知不觉断送一生. 5、生意,可以掌控努力与投资,却无法掌控结果. 人生得意时找出路,失意时才有退路,宝马都有备胎,您的人生呢.