写点什么

深入了解扩展的 5 个阶段

  • 2013-03-11
  • 本文字数:1184 字

    阅读完需:约 4 分钟

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 每秒能执行成千上万次请求

查看英文原文**: Insight into the Phases of Scaling **


感谢孙镜涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-03-11 04:042844
用户头像

发布了 256 篇内容, 共 81.6 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

亮相Google I/O,字节跳动是这样应用Flutter的

字节跳动技术团队

GitHub火到糊!这份阿里内部10W字Java面试总结,让你薪资翻倍

Java架构追梦

Java 架构 面试 跳槽

奉劝各位准备面试的Java程序员耗子尾汁,赶紧扔掉网上那些千篇一律的面试题

Java架构之路

Java 程序员 架构 面试 编程语言

迎战大厂!“金九银十”和秋招通过率达95%的Java面试要点集锦

Java 程序员 架构 面试

获5项大奖,发布《云计算开放应用架构标准》,阿里云持续领航云原生

阿里巴巴中间件

Java日志的心路历程

程序猿阿星

Java log4j logback log4j2框架 Java日志

毕业5年的同学突然告诉我,他已经是年薪50W的Java架构师了

Java架构师迁哥

将DataX执行结果通过钉钉上报

白粥

DataX

为鸿蒙OS说两句公道话(我对鸿蒙OS的一些看法)

Phoenix

Qcon全球软件开发大会 融云分享SDK交付质量保障经验

融云 RongCloud

华为云IoT设备接入服务全体验

华为云开发者联盟

物联网 IoT 华为云 智能IoT边缘服务 华为云IoT云服务

难忘阿里,4面技术5面HR附加笔试面,走的真艰难真心酸

Java 编程 程序员 面试 架构师

什么是交叉编译

IT蜗壳-Tango

IT蜗壳教学 6月日更

有道精品课全链路测试的改进和思考

有道技术团队

测试 有道精品课

☕【JVM技术之旅】全流程化分析Java对象的创建过程

码界西柚

JVM 6月日更 对象布局 内存结构

【融云技术】超大规模并发下自定义属性的设置与分发

融云 RongCloud

一文回顾 Java 入门知识(中)

逆锋起笔

Java 后端 JAVA开发 java基础 javase

小树量化机器人系统开发(马丁策略)

薇電13242772558

区块链 数字货币

三位一体:打造软硬服一体化的区块链平台

趣链科技

区块链 联盟链 Baas 一体机 底层平台

【星环案例】我们用TDH+Sophon把工厂“搬”进高校实验室,推进产学研一体化

星环科技

联邦学习这件小事

趣链科技

区块链 联邦学习 技术架构

和12岁小同志搞创客开发:如何驱动各类型传感器?

不脱发的程序猿

DIY 传感器 如何驱动各类型传感器? 创客

Overbit Flash|5 月加密货币市场风暴抹去了 90% 以上的 NFT 交易量

Overbit学院

比特币 加密货币 NFT Overbit 保证金交易

前后端分离浅析以及分离教程

北游学Java

前后

新手小白必须知道的Linux基础:常用命令(1)

学神来啦

Linux linux命令 linux运维 linux 文件权限控制 Linux教程

【案例】构建应急指挥体系,实现生产过程实时监控

星环科技

从一面就被拒到收割字节offer,我花了一年时间,功夫不负有心人

Java架构师迁哥

一周信创舆情观察(5.24~5.30)

统小信uos

2021年阿里/腾讯/美团/字节1万道Java中高级面试题汇总,新鲜出炉

Java架构师迁哥

Fabric架构演变之路

趣链科技

区块链 fabric 联盟链架构 演变

大专学历成功拿下阿里offer,分享面经及我的Java面试复习资料

Java架构之路

Java 程序员 架构 面试 编程语言

深入了解扩展的5个阶段_DevOps & 平台工程_Aslan Brooke_InfoQ精选文章