Christopher Smith在上月举行的Scale11x上进行了题为“扩展的五个阶段”的演讲,演讲中他分享了自己对实现Web应用扩展和解决扩展中的问题的见解。Christopher举了在各阶段实现扩展的例子,同时他还对通过添加或优化良好定义的组件来改善Web应用整体扩展做了讲解。他从负载均衡讲到UDP协议的优化使用,带领听众经历了一段集知识性和娱乐性于一体的旅程。
最重要的基础扩展架构应具有在负载均衡器后面添加Web应用服务器的能力。负载均衡器能够通过在应用服务器间划分请求和会话的方式进行web应用的线性扩展。该技术相当于通过增加应用服务器进行线性扩展,然而这只不过是延缓了不可避免的C10K问题,因为这种方式没有增加单个请求的响应能力。
Christopher介绍了web应用前置的缓存系统如何通过处理读取操作来支持扩展:联合使用多重缓存系统使扩展最大化。Memcache服务器(或类似的服务器)可以在内存中存储数据从而使应用服务器能够快速检索。还可以在负责均衡器之前放置反向代理为缓存的资源提供服务。最后,可以使用内容分发网络(CDN)使缓存的资源更靠近终端用户。不过缓存在写数据方面有它自身的限制。
优化的持久性框架能够将扩展写入的能力带到扩展中的新阶段。Christopher认为,对大部分人来说,能够成功运用这一阶段和之前提到的内容就足够了。选择合适的SQL或NoSQL数据库来匹配应用数据结构将显著地增强扩展性。并发读/写能力将提高写操作的吞吐量和响应能力。最后如果你能够“在ACID(特别是C和D)上耍点手腕儿”,你就可以将更多的写操作提速。
这些扩展技术的基础是使web应用读/写数据的延迟最小化。Christopher分享了计算机上不同操作的延迟时间:
L1缓存引用 – 0.5 ns
分支预测失败 – 5 ns
L2缓存引用 – 7 ns
互斥锁/解锁 – 25 ns
主内存引用 – 100 ns
使用Zippy压缩1KB – 3,000 ns
在1Gbps网络上发送1KB – 10,000 ns(0.01 ms)
从SSD随机读取4KB – 150,000 ns(0.15 ms)
从内存中顺序读取1MB – 250,000 ns(0.25 ms)
同一个数据中心内部往返 – 500,000 ns (0.5 ms)
从SSD连续读取1MB – 1,000,000 ns (1 ms)
硬盘寻道 – 10,000,000 ns (10 ms)
Christopher演讲的其他部分涵盖了扩展的高级阶段,包括:
使用商用服务器传递代码而不是数据:Map/Reduce (Hadoop),DHT(Cassandra、HBase和Riak)
通过数据分区路由数据:ESP/CEP、Eigen、Storm、Esper、StreamBase和0mq等
使用UDP而不是TCP
那些管理超大规模web应用的公司使用了最先进的技术,例如Facebook使用UDP和Memcached每秒能执行成千上万次请求。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
当web成为选择 开发原生移动app还值得吗?
随着iPhone的推出,其进入的代价是通过苹果应用商店流通的编译过的Objective-C二进制代码的分发。
-
十大响应式Web设计框架
对于设计师而言,网站设计中的任意一环节都不容忽视。借助网上的一些资源,只需简单的几个步骤你就可创建出更具吸引力的设计,本文将分享十款最佳的响应式Web设计。
-
管理员必知:监控系统五大必备特性汇总
纵观我们部署在基础设施当中并始终保持运作的全部测量机制,监控系统无疑是重要性最高的机制之一,但它却常常遭到我们的忽视。
-
十款开源的数据管理工具
任何Web软件和应用程序都需要强大的数据库来做后盾,目前,网上有无数个数据库管理工具,而开发者选择一款适合自己的尤为重要。