发布于 2014-08-30 03:09:24 | 256 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Ubuntu Linux操作系统

Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统。Ubuntu基于Debian发行版和GNOME桌面环境,与Debian的不同在于它每6个月会发布一个新版本。


在新版本的发布日,准备试用新ubuntu的小伙伴们,从他们那里,我们可以获取高达8000次/秒的下载请求!事实上,去年十月ubuntu13.10发布当天,在很长一段时间里,ubuntu.com官网在多次下载高峰,保持了良好的状态而没有崩溃,这要归功于付出巨大努力的“基建设施团队”。

Ubuntu.com一直运行在Drupal(官网浏览)上,如今我们已经逐渐将它转移到了定制更多的Django基础系统上。今年三月,为了Trusty Tahr的发布,我们及时开始了将网站关键的#下载部分#进行了迁移的工作。这成为了,为寻找缓减服务器压力方法,而得到的一个极佳的机会!

选择合适的镜像下载源( geolocated)对于网站应用来说是一件艰辛的工作

当有人从ubuntu.com页面(在一个感谢页哦)请求下载ubuntu的时候,事实上,ubuntu.com向其发送了大概300个左右的离他最近的镜像地址

为了给用户选择一个合适的镜像下载源,它不得不做下面这样的事:

1. 确定客户端IP地址所显示的,用户所在的国家

2. 获取所在国家存在的可用镜像源列表

3. 随机为他们匹配能符合高带宽下载的镜像源

这个过程是目前整个网站中最密集的工作,而这却并不是因为这些任务本身是特别复杂的,只是因为这需要为每一个8000次/秒的潜在用户,在激烈下载的时候,预防网站因高强度请求可能导致崩溃时,而必须要做的!

为了能够有效应对网站的负载,我们为此需要使用超过40个虚拟机来均衡负载。

客户端真的什么都能做吗?

我们首先要做的就是,将完整的镜像列表加载到“感谢下载页”,并且调用用户浏览器中JS来选择出合适的镜像!这将大大减少对网站应用的负载压力,这是因为下载页面将像其他页面一样被有效的静态缓存!

为了能够可靠的获取用户所在的地理位置,唯一的办法就是通过客户端使用其中的地理定位API,这一功能,85%的用户浏览器都是支持的!另一个小问题是,只有用户给出一个下载请求的许可,才可以获得一个分配的镜像下载,可能浙江稍微对他们的体验造成一定的影响!

这个解决方案对用户的使用来说稍许有些不便利,因此,我们找到了新的“trade-off”:

融合解决方案——“Apache geolocation”

Apache的mod_geoip2可以应用基于用户位置的服务器规则,而这要比网站应用层的地理定位要快的多!这就意味着,我们可以使用Apache向用户发送其特定国家的下载页(比如德国的下载页面),通过在URL后添加&country=GB来实现!

这些特定下载页包含了所在国家的可用下载的镜像源列表,现在它们没一个都可以被缓存到本地,这样就极大的缓减了服务器的压力。客户端通过JS随机选择镜像给用户(这样每一个镜像的下载源都应该是最合适的),随后启动下载,而此处却不需要客户端的地理定位!

很高兴,这个解决方案在Trusty Tahr发布前被成功实施了!



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务