CNBC:aiCache助我轻松应对每天2亿5千万条实时股票行情信息

2018-06-11    来源:

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

    随着cnbc.com(美国华尔街最大财经网络)日访问量不断大幅增长,我们发觉自己陷入了一个很多网站都再熟悉不过的艰难境地,网站运行的各方面都被动地发生了重大的变化,现状堪忧。在硬件,存储空间以及能源上的需求使我们不得不增设额外的服务器,延长本来毫无必要的响应时间。我们甚至要依靠经常性的微型缓存或类似手段才可勉强提高代码性能……这些让人不安和头疼的问题一股脑地堆到了眼前,让人想忽视都难。
    由于需要不断革新产品才能保持网站竞争力,而开发资源又十分有限,因此即使code base(码基)能被显著改善,网站重构的能力依然受到了限制。那么,要怎样才可以提高网站性能并解决其它方面的需求问题,而又不至于要请出整个公司的专业团队夜以继日地操劳呢?我们想到了一种卓越的网络缓存应用加速产品——aiCache!
    缓存作为一种技术,原理并不复杂。一般而言,一个站点为了对用户请求生成响应,必须使数据经过“Apache-JK-Java-数据库”一系列后端 处理环节(我们CNBC网站差不多可以说是一个Java“商场”了)。缓存设备就是在这个处理系统前端对网络中的用户请求进行处理。当然,“Apache-PHP-数据库”等也可以看做是后端处理系统,它通过字节代码与/或DB结果集缓存。以我们CNBC为例,以前,我们有很多其它的次级缓存系统,目的在于加快读股票信息和与公司相关的信息。然而,要发展这么多的微型缓存并在系统上保持全部的微型缓存并非易事,也解决不了多大问题。幸好,aiCache让我们又回到了正轨。
   aiCache基本意旨在于在服务器前端通过缓存处理网络中的用户流量,并将你的整个网络环境提升到一个新的层次。我们不认为aiCache本质性能就是革新的,宁可相信是由于其功能之全面解决了每个您能想到的问题。
    我们还发现,aiCache实际上的性能潜力是可以无限挖掘的!它提供难以置信的配置灵活性,还支持实时报告和警报机制。
    就存储空间的问题,我们在下面不分先后地罗列了一些使用该产品的经验:
    aiCache可在任何Linux发行版本上运行,我们的情况正好是安装了RedHat 5的64位惠普机DL360G5。
    响应被缓存在 RAM 中,而非磁盘上。不存在磁盘IO (访问日志和错误日志的情况除外,但它们是可配置的)。而且,缓存响应不存在延迟——压力测试表明TTFB为零毫秒。另外,资源使用率极低——装有 aiCache的服务器可每秒处理超过2000次的请求却依然还有99%是闲置。抱着怀疑的态度,我将压力测试定为每台服务器每秒处理25,000次请求 ——可此时的负载量才占2%。这进一步证实了aiCache生产厂商所作出的承诺绝非虚假。
    我们对 GET 和 POST请求都进行了缓存,使用了查询参数丢弃 (即有选择性地删除那些增加缓存复杂性的半随意参数)。
    当用户提交新的评论后,我们使用响应驱动终止机制来更新讨论区内容。
我们有机会使用到了网站“管理后备模式” (在这种机制下aiCache以先前缓存好的响应对用户做出回答,服务器不受任何请求干扰),以加速服务器从瘫痪状态恢复正常服务。
我们还多次通过标记原始服务器的功能避免代码出错的情况。
    从我们十个不同的分站来看,aiCache的平均缓存率达80%,其中一些站点的缓存命中率甚至高达97%。在大幅减少了服务器集群的数量以及原始服务器所需面对的网络流量之后,我们甚至还发现整个web,数据库和其它后端系统的资源使用率都得到了降低。
    Keynote报告指出响应时间将近大幅度降低了30%。
    每个人都爱上了实时流量报告。这是在公司许多计算机上的一个标准化窗口,你可以从这个窗口了解到每个加速站点的每秒请求次数,响应时间,正常工作与出现问题的服务器数量,客户端与服务器连接数量, BW 输入输出值等等。
    我们将Nagios与服务器连接,以通过SNMP 对aiCache的一些综合资料进行读取和制表,它可以把你能想到的任何事情作为一个对象标示符。
    我也非常喜欢它们的CLI 界面:你可以看到响应数的总量,做出任何回应,终止响应,以请求内容,大小,完成时间,更新次数等不同方式实时查看响应。无需再进行日志分析。由于有一些命令是成群发出的,所以你只需在一个节点操作它们,它们会照葫芦画瓢,全部听令。
    同样,以上的窗体中只罗列了我们这家公司所使用的功能,只占了aiCache全部功能中的一小部分。要知道,aiCache的用户手册可多达四十页呢!里面恰好全是我所喜欢的核心技术内容。
    下面,再谈谈我们网络装置的细节。我们使用了F5负载均衡器,并将虚拟IP配置为可供多台aiCache服务器和原始服务器同时使用。即在最前边用 F5负载平衡设备,下边的有多个aiCache服务器和原始服务器。通过使用F5的VIP机制,只要有一台aiCache服务器可以正常运行,我们就将所有的网络流量都交给它们处理,而让原始服务器自动或按需的失效备缓所有网络流量。
    我们也使用著名的CDN技术来服务各种辅助内容,如Javascript,CSS和镜像。
    我通过网站上一个维基百科的链接尝试进行下载。由于aiCache中已经对这个内容进行了缓存,使得这个请求执行得非常迅速,让这我大吃一惊。回想大约在2000年时,我们使用 Novell公司的 ICS。但是要搞清楚什么样的URL可以被缓存,可以缓存多长时间真是一种煎熬。这样的经验更使得我们对aiCache的出现眼前一亮。
最后提一句,当你打算对aiCache进行压力测试时,请使用您自己的服务器测试。否则,你极有可能毁了一台或更多的网络设备组件!
   
作者:Rashid Karimov,电子工程师,自1992年就在网络设备领域工作,以前是俄国internet服务提供者,现在为像CNBC和NBC (cnbc.com, NBC奥运网站及其它)这样的大型繁忙网站设计和运行网络设备。文章译自http://highscalability.com/serving-250m-quotes-day-cnbc-com-aicache

 

标签: linux 标准 代码 服务器 美国 数据库 网络 网站 问题 选择 用户

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:解决服务器虚拟化后引起的管理混乱

下一篇:数据中心整合关键点在哪?