New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

天猫双11前端分享系列(二):天猫双11页面服务容灾方案大揭秘 #26

Open
maisui99 opened this Issue Nov 23, 2015 · 3 comments

Comments

Projects
None yet
4 participants
@maisui99
Contributor

maisui99 commented Nov 23, 2015

会场活动页,承载了促销商品导流功能,是消费者的购物入口,在双11活动中的地位可谓重中之重。保障活动页的快速稳定可用,是非常非常重要的。这次天猫双11会场页面渲染由wormhole来承担(wormhole本身会在后续的文章中详细介绍),下面介绍一下wormhole的容灾方案。

技术方案

动态降频

wormhole主要消耗性能的地方就在模板引擎渲染这部分,在并发访问量大的情况下,频繁的模板渲染会导致系统负载急剧飙升,导致响应延迟。为了保证大并发量下,足够快速的响应,针对的做了动态降频方案,具体的见下图:

整个渲染策略就是,定时备份页面到OSS集群,每次请求过来,都会去判断当前系统Load是否过载,若果过载则直接读取上次备份的页面返回,而不使用模板引擎渲染,达到动态降低系统负载,快速响应的目的。

CDN兜底

动态降频能够保证大部分情况下的快速响应;但是,如果wormhole集群全部当机,则也无能为了。为了确保双11万无一失,还得有一招后手。为此,我们做了一个兜底方案,见下图:

同样类似于第一个方案,也会定时备份页面到OSS集群,不同的是,这次备份到另一个异地的OSS机房,以防止OSS服务因不可抗力挂掉;如果发生了最极端的情况,源站全部挂掉,由当天的值班人员,手工切换CDN指向已经备份了的OSS文件,保障页面可访问。

监控

wormhole基于Node平台开发,我们知道Node平台长期以来,对内存使用监控这块一直很薄弱;对线上服务内存泄露排查基本无从入手;Node服务就像一个黑盒,只能祈祷不要出错,出错也只能使用万能的重启大法。为了弥补这一块,alinode团队推出了监控系统,重点解决这些痛点问题。

总结

  • 没有完美的方案,必须要结合具体场景做调整。必要时,人工干预也是需要的。
  • wormhole服务超级稳定,一条容灾方案也没有执行。

天猫前端团队招聘

如果你看了这篇文章,对加入天猫前端团队有意向的,可以发简历到join-tmallfe@list.alibaba-inc.com,招聘要求见:https://job.alibaba.com/zhaopin/position_detail.htm?positionId=3504

@yutingzhao1991

This comment has been minimized.

Show comment
Hide comment
@yutingzhao1991

yutingzhao1991 Nov 30, 2015

活动页面什么的应该对每个用户都是相同的吧?也没有实时更新的需求。只要定期同步到CDN就好了,为什么还要走wormhole这个呢?

yutingzhao1991 commented Nov 30, 2015

活动页面什么的应该对每个用户都是相同的吧?也没有实时更新的需求。只要定期同步到CDN就好了,为什么还要走wormhole这个呢?

@mlyknown

This comment has been minimized.

Show comment
Hide comment
@mlyknown

mlyknown Mar 28, 2016

动态降频哪里这么判断当前系统Load是否过载呢?

mlyknown commented Mar 28, 2016

动态降频哪里这么判断当前系统Load是否过载呢?

@noodleswww

This comment has been minimized.

Show comment
Hide comment
@noodleswww

noodleswww Nov 21, 2016

@mlyknown 猜测可以通过请求频率,流量阈值,响应时间作为依据。

noodleswww commented Nov 21, 2016

@mlyknown 猜测可以通过请求频率,流量阈值,响应时间作为依据。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment