Google

google数据中心位置谷歌拥有近100万台服务器,分布在全球各地的庞大数据中心,规模是相当庞大的,数据中心位置如下。

1.png

  1. google对于硬件

    截止到2010年,Google大约有100万台服务器,有超过500个计算机集群,处理不同地域的不同任务。
    尽量减少电量耗损和去除不需要的部件。我们还确保服务器在未执行任务时消耗极少的能源,而不会在计算任务较少时仍然消耗大量电能。
    只利用运行应用所必须的部件。我们会去除不必要的部件,例如外部接口和视频卡。我们还对服务器和机柜进行优化来尽量减少风扇消耗的电量。风扇转速只要能保证机器温度可以维持运转即可。
    Google希望,所有供应商给我们提供的部件不管在空转、满负荷运转,或在使用率较低的情况下运转时都能够保证高能效,这就是我们在 2007 年提出的“能源均衡”理念。Google的研究表明,在大型数据中心配备更多能源均衡的系统有助于实现将能源使用总量减半。

  2. google服务器引入阶段

    采用ODM流程,Google提供需求。
    Google明确:数据中心环境需求、测试规范、使用软件、主件需求,服务器供应商完成从设计、研发、测试、验证所有阶段,最后交付于google。Google会得到机器进行业务验证。

  1. google集成测试验证

    google进行端到端的测试,从一个用户请求到响应的全链路测试,基于业务压测。如下图:
    2.png
    google 端到端测试使用Hermetic Servers,密封的服务器,是一台没有网络链接的,但是能根据希望工作的服务器,用于端到端测试。Hermetic概念是一个孤立的系统并不一定是单一的服务器。
    Hermetic Servers可以用于如下测试:
     启动测试,测试应用启动过程中是否有错误。
     测试后端的API
     微性能基准测试
     前端服务器的U和API测试
    端到端测试步骤
     如上图中启动整个SUT
     通过测试客户端制造请求到服务器
     验证从服务器响应的合法性
    因为要启动所有SUT服务器,所以测试时间会变长,
    由于端到端测试复杂,因此google内部有人也提出要简化测试流程。而非所有内容都进行端到端测试。单元测试相比端到端有自己的优点。

  2. Google系统测试

    Google在系统测试层面关注的是真实系统的表现,他们不会去写驱动和灰度测试但是会使用故障注入。通过故障注入工具注入特定的故障。例如Bigtable业务是基于GFS的,Google会通过GFS故障注入工具来注入问题。观察Bigtable有负载情况下,如果出现持续的硬件注入故障后,Bigtable是否还可以工作。
    通过故障注入可以让开发者和测试工程师来更加精确的测试组件并帮助提升质量。
    google测试金字塔
    3.png
    google在2014年提出测试金字塔,下方是单元测试,金字塔上方的测试大型困难的。原则是70/20/10,即70%的单元测试,20%的集成测试,10%的端到端测试。需要避免将金字塔倒置,或者说只有单元测试和端到端测试而省略集成测试。

  3. 小结

    google的测试在不断探索改进,不断的在根据业务进行优化。
    Google测试金字塔中单元测试/集成测试/端到端测试中70/20/10比例是很有参考的一个内容。

  4. 微软测试

    微软数据中心分布:
    4.png
    微软有20以上设计、建设和操作数据中心的经验,在2014年微软加入的OCP(Open Compute Project)项目来分享微软在这方面的知识,是开源硬件计划。在加入当年,微软就贡献了两款硬件产品设计,从利益角度来看,这两款产品比传统服务器的成本,实现40%成本的节约以及15%的功率增益。
    同其他厂家一样,微软也在设计自己的服务器,google在这块比较保密但是facebook是比较开放的,OCP就是Facebook创建的项目。

  5. 微软集成测试

    在微软数据中心部署的服务器集群运行多种不同的负载,不同的负载会有不一样的性能和功耗特性。而微软会更多的关注服务器本身的设计(能耗和性能的平衡),以及海量服务器的管理。
    在业务基础测试方面,针对业务测试微软会有特定的测试框架,例如针对PowerShell的测试框架 Pester,该框架本身针对软件本身而不关注硬件。

  6. 微软小结

    现在Google\微软都已经加入OCP,OCP中硬件开源项目越来越多,其中会有一些主流的设计技术和测试框架方法。

  7. 关于Hardware思考

    1、 When you have a lot of machines how do you build them to be cost efficient and use power efficiently?
    2、 Use ultra cheap commodity hardware and built software on top to handle their death.
    3、 A 1,000-fold computer power increase can be had for a 33 times lower cost if you you use a failure-prone infrastructure rather than an infrastructure built on highly reliable components. You must build reliability on top of unreliability for this strategy to work.
    4、 Linux, in-house rack design, PC class mother boards, low end storage.
    5、 Price per wattage on performance basis isn't getting better. Have huge power and cooling issues.
    6、 Use a mix of collocation and their own data centers.

  8. 参考:

数据中心位置
https://www.google.com/about/datacenters/inside/locations/index.html?hl=zh-CN
谷歌GFS:http://www.cnblogs.com/fireflyupup/p/4833809.html
equinix
http://www.equinix.cn/
google数据中心:
https://www.google.com/about/datacenters/
Google服务器架构图解简析(转载)
http://blog.csdn.net/i_am_tomato/article/details/52743910
google架构
http://highscalability.com/google-architecture
微软选择硬件供应商以打造质量更好的服务器
http://www.cnbeta.com/articles/tech/549065.htm
能效:我们如何做到这一点
google testing blog
https://testing.googleblog.com/2012/10/hermetic-servers.html
opencompute
http://www.opencompute.org/community/get-involved/
Designing and Managing Servers for Cloud-Scale Datacenters
https://blogs.technet.microsoft.com/msdatacenters/2013/10/24/designing-and-managing-servers-for-cloud-scale-datacenters/