新闻动态

完善的7*24小时服务,携手共赢,共同成长

首页 新闻动态云计算文摘 正文

经典回顾—大规模服务设计部署经验谈

2016-03-18 12:03:59   
 
有一篇流传很广的《大规模服务设计部署经验谈》,作者是 James Hamilton,这篇文章让很多人深入了解了大规模服务的设计和部署经验。James Hamilton 现在是 Amazon Web Services 的 VP 和杰出工程师(Distinguished Engineer),此前曾在微软LivePlatform Service团队的架构师,在微软有11 年工作经验。《大规模服务设计部署经验谈》作为他的经验总结,首先发表于2008年的程序员杂志,是颇受好评的一篇文章,让当时很多还不太了解大规模互联网服务架构的技术人大开眼界,也从中学到不少东西,而且放在今天也不过时,可以一起回顾一下。现在,AWS 已经发布十年了,James在一篇文章中回忆了初用AWS 的感受,还有这十年来的发展。另外两篇文章,一篇是关于美团的压力测试,另一篇是淘宝的秒杀系统设计,想必美团和淘宝都有不人读过 James 的经典文献!

再多提一句:上周我们对外发布了云计算调查,这次调查截止时间还有24小时,如果你希望有机会拿到樱桃黑轴机械键盘,不妨点击下面的链接参与调查,机不可失,大家抓紧。
调查问卷
 

AWS VP 兼杰出工程师James Hamilton 回顾云计算创新的十年——让微软和传统 IT 厂商心生怨怼的十年

在微软的前八年,James Hamilton 曾是SQL Server 团队成员,并带领大部分的核心引擎开发团队。在加入微软之前,James 曾担任IBM 的DB2 UDB 团队的首席架构师,更早时曾带领团队交付IBM的第一个C++ 编译器。在20 世纪70 年代末、80 年代初,他曾持有汽车机械师和意大利汽车竞赛驾驶执照。他现在已经卖掉了自己陆地上的房子,和夫人一起在一条船上工作,哪里的数据中心需要他,他就会驾船过去解决问题。

在 James 自己的博客上,他回顾了自己还在微软时,刚开始使用 AWS 的惊喜感受。  

比起当时我们为多数据中心冗余存储的开销,Amazon S3要便宜两个量级。更具革命性的是:只要一张信用卡,就可以初始化存储了。不需要为财务审批准备提案,不需要招标,不需要客户的遴选流程,不需要跟供应商谈判,不需要寻找更多数据中心的场地空间。只要注册用户,就可以开始干活了。

发布这样的产品,不是来自传统的 IT 企业厂商,不是某个盯着高毛利、困难的谈判,有时候甚至要做协议使用审计的厂商。这是非常不一样的,完全不同的供应商,完全不同的模式,更顺畅的部署过程,完全动摇以往根基的价格体系,起价就很低,随着时间变化甚至有可能降低价格,而不是不断攀升。

上述优点,也是 SpeedyCloud 一直以来的工作目标。

在微软的时候,James 曾半认真地戏称:“不管客户是否需要,我们每十年都会发布两次产品。”而AWS没有一个“策略”,不会去说服客户他们真正需要什么,而是交付他们自己觉得有必要的服务功能,并且会马上投放给广大客户使用。好的服务,很快就能变成出色的服务。

文中还回顾了 AWS 发布以来的里程碑,感兴趣的同学可以去原文看看。


金句:

在我过去的工作中,我见过很多关于产品的讨论变得越来越严肃,甚至事关生死,甚至会导致几年内都没有效率。在AWS,只要几天时间,争论就会根据客户的使用数据得出结论,工作重点很快转到执行层面。

标签:AWS、数据中心、成本、微软

 
阅读原文
 

【神奇数字】


400Gbps,一次 DDoS 攻击峰值;50000,Mythbuster 网站高清格式电影每秒的帧数;3900,艺术家保罗·克利的个人笔记页数;1 Terabit,卫星向飞行中的飞机每秒传输的数据;18%,全球移动市场收入年增长率;21TB,BBC 每天向 S3写入的数据量;3亿美元,Snapchat 的年收入。
 

经典回顾:大规模服务设计部署经验谈

完成本文时,James Hamilton 还在微软,不过是服务于 Windows Live Services Platform。文中的经验,是他和团队20年大规模软件系统和互联网级大规模服务的智慧结晶,包括Exchange Hosted Services 团队、Microsoft Global Foundation Services Operations团队以及Windows Live平台多个团队的经验,有些服务的用户规模超过二亿五千万。虽然已经是将近十年前的文章,但仍然可谓字字珠玑,其中很多原则和经验放到现在依旧不过时。经典就是经典。

文中开宗明义表示,本文的目的是要帮助人们:

  • 快速交付运营友好的服务;
  • 避免清早电话铃声的骚扰,帮助备受运营不友好的服务侵扰的客户尽量摆脱窘境。

接下来是三条原则:

  • 做好发生故障的心理准备。
  • 保持简单化。
  • 将所有的工作自动化。

然后文中用十个小节涵盖了设计和部署运营友好服务所必须做到的各个方面。它们是:整体服务设计;以自动化和预置(Provisioning)为目标进行设计;依赖关系管理;发布周期及测试;硬件的选择和标准化;运营和容量规划;审核、监控和警报;体面降级和管理控制;客户及媒体沟通计划;以及客户自我预置和自我帮助。

试举第一节“整体服务设计”的基础原则:

  • 设计时为故障做好准备(Design for failure)
  • 冗余和错误恢复(Redundancy and fault recovery)
  • 廉价硬件切片(Commodity hardware slice)
  • 单版本软件(Single-version software)
  • 多租户(Multi-tenancy)
  • 采用设计运营友好的服务的实践,包括:

    • 快速服务健康测试
    • 在完整的环境中开发
    • 对下层组件的零信任
    • 不要把同一个功能构建在多个组件中
    • 不同的集群之间不能互相影响
    • 允许(少量)在紧急情况的人工干预
    • 保持一切简单健壮
    • 全面推进准入控制
    • 给服务分区
    • 理解网络设计

其他小节的经验和原则也是层次分明,值得细细阅读。

金句:

使用已经交付的历经考验的组件。历经考验的技术通常总是要比大胆前卫地走在潮流尖端运行要好很多。稳定的软件要优于新版本的早期,不管新特性如何有价值。这条原则也适用于硬件。批量生产的稳定硬件,往往要比从早期发布的硬件所获得的些许性能提升要有价值得多。

要降低大规模互联网服务的运营成本并改善服务的可靠性,一切从编写服务时注重运营友好开始。

标签:大规模服务、架构、设计

阅读原文
 

【精彩声音】


是的,他告诉他们,NORAD北美联合空防司令部的电脑本来应该是封闭的,但是有些军官希望能周末时在家干活,所以他们就留了一个开放的端口。(来自 Dark Territory  )
 

从0到1美团如何构建压测工具?

美团为什么构建压测工具?美团内部RPC大多构建在Thrift上,需要针对日常开发服务进行压力测试来发现潜在问题。尽管可使用脚本语言或开源工具,但无论采取何种方式,因其运作的复杂性会导致压测是一种耗时费力的过程。对美团而言,一款简单好用的压测工具是必需品,美团在构建压测工具前,对现有的主流压测工具进行了调研,包括JMeter、Twitter/iago、Gatling、Grinder及Locust等常见的压测工具,但因适用场景与美团的需求不符合而排除。

美团分析了自身需求后,对新压测工具的功能提出了以下4点要求:

  • 线上流量拷贝
  • 简单易用的操作界面(接入压测的时间应控制在1h以内)
  • 清晰的图标能反映压测应用的各项指标
  • 满足包括Thrift、HTTP等服务的压测需求

明确功能需求后,那美团如何构建压测工具呢?首先介绍了典型的抽象压测过程;然后是拷贝流量,压测工具提供VCR工具拷贝流量,将线上请求序列化写到Redis里,并且为方便用户查看具体请求,选取了JSON格式作为序列化和反序列化的协议等。接下来是聚合数据,介绍了应用打压后的评估压测结果的指标,压测工具采用了 InfluxDB来完成数据的聚合工作;最后给出了打压过程的架构图。

本文针对美团的实践应用,具体对拷贝流量、压测逻辑实现、创建应用及性能指标等进行了解释。文章最后阐述了美团压测工具上线后的成果,即已接入了20多个应用,完成数百次的打压实验,应用接入时间仅需15~30min,保证了美团服务的稳定,同时节省了开发者的时间。

金句:

压测工具采用Groovy来进行编写。对每个应用来说,只需要实现runner接口就可以实现对应用的打压。

标签:压测、流量、需求

阅读原文
 

【精彩声音】


我不会说微服务到底应该有多大,但是在 BBC,我们大概用600行左右 Java 代码。(来自 @danielbryantuk
 

一篇文读懂淘宝大秒系统设计原则

淘宝大秒系统原型是淘宝详情上的定时上架功能。卖家为吸引大量用户购买,压低商品的价格,导致系统突现访问峰值,为缓解系统的压力,设计了大秒系统,将突发流量进行隔离。小米新品抢购限流采用的就是大秒系统,本文详细介绍了大秒系统及相关典型读数据的热点问题的解决思路与实践经验。

想了解淘宝大秒系统?我们需清楚系统设计的原则是热点隔离和动静隔离。本文首先说明了热点数据隔离的方法,即针对秒杀做多个层次的隔离,包括业务隔离、系统隔离和数据隔离等,实现快速区分已识别热点和普通请求的区别;然后本文介绍了大秒系统动静分离,并分析了“刷新抢宝”和“秒杀答题”的设计思路,从而引出对大流量系统数据做分层校验也是重要的的设计原则,由此总结出大秒系统分层架构的四大设计原则:

  • 把大量静态不需要检验的数据放在离用户最近的地方
  • 在前端读系统中检验一些基本信息
  • 在写数据系统中重复校验
  • 在数据库中保证数据准确性

了解大秒系统架构的设计原则等相关内容后,如果我们采用各种方法,依然无法阻止大流量涌入怎么办?本文没有直接回答这个问题,但对此强调了大秒系统需解决的三大关键问题:

  • Java处理大并发动态请求优化
  • 同一商品大并发读问题
  • 同一数据大并发更新问题

本文最后补充了淘宝系的其他数据热点问题,如数据访问热点和数据更新热点等。

金句:

解决大并发读问题采用Localcache和数据的分层校验的方式,但是无论如何像减库存这种大并发写还是避免不了,这也是秒杀场景下最核心的技术难题。

隔离、动态分离、分层校验,必须从整个全链路来考虑和优化每个环节,除了优化系统提升性能,做好限流和保护也是必备的功课。

标签:系统、数据、分层架构、动态分离

 
 
阅读原文
 

【精彩声音】


我们必须一再强调:简单!简单!!简单!!!这就足够好了,而且能带来令人惊叹的效果。如果无法先做到简单,是无法令人惊叹的。我们的团队一直想要实现令人惊叹,实际上我们只要做到足够简单就好了。如果不能做到这一点,我们的麻烦就大了。(来自 Steve Kerr)
 
 
SpeedyCloud『您心目中的云计算什么样?』有奖调研活动进入24小时倒计时,未参加的朋友们点击下方调查问卷扫描二维码继续参与,告诉我们您对云计算的建议与想法,帮助我们提升产品的服务和质量,与我们一起参与云计算的未来。



如果您对我们公司和产品有什么想法,欢迎发送邮件至social@speedycloud.cn。

注:本活动最终解释权归北京迅达云成科技有限公司所有。
调查问卷
 
点击回顾
 
关注SpeedyCloud官方微博
掌握最新动态和优惠
扫描SpeedyCloud官方微信
获取价值50元免费云主机
欢迎发送邮件到social@speedycloud.cn,聊聊你对于“SpeedyCloud云计算技术文摘”的想法和建议,也欢迎你说出对于SpeedyCloud迅达云成公司的意见和看法。

*|FORWARD|*