我是靠谱客的博主 天真世界,最近开发中收集的这篇文章主要介绍深度解析国内公有云大厂基础实力,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

导读

最近网上有很多各种各样的“国内公有云技术分析”,“云计算实力榜”,“公有云技术评析”等等五花八门的文章,可谓是乱花渐欲迷人眼。看了这么多文章,很难发现一篇真正的从开发者,用户角度来客观评价国内公有云厂商基础服务实力的有深度的文章,小编本着对开发者同学们负责的角度来深度分析一下目前国内几大主流公有云厂商的技术实力,为各位同学在选购公有云产品的时候提供一些帮助。

由于“国内公有云厂商”这个话题太大,小编决定把这篇文章做成一个系列,每篇文章深度介绍两家厂商,每家厂商提供的各种IaaS, PaaS服务纷繁复杂,小编也不会按照传统的方式将每种服务都做介绍,俗话说贪多嚼不烂,小编挑选几个在开发者日常工作当中最常用的几个服务作为切入点,从性能,稳定性,服务质量,价格等多个方面做一个综合介绍,希望大家在读完这个系列的文章以后能够有一个清晰主观的认识,而不是被某家厂商洗脑而失去选择能力。

废话不说,进入今天的主题,先选国内公有云2016年全年营收第一梯队的两家:阿里云和微软Azure中国版。

选择标准

阿里云和Azure都提供了数十种服务,涵盖IaaS,PaaS, SaaS,但是由于篇幅的原因,我们这里无法详细对比每一种服务,我们针对目前国内比较火的互联网行业,分析这个行业的典型技术架构就会发现,绝大部分的公司在使用公有云服务的时候都会把重点放在以下几个服务(排名不分先后):

  • 虚机 - 单机,虚机集群,弹性计算池等

    作为云计算的基础模块,虚机的重要性不必多说,几乎所有的计算任务都是通过虚机来承载。虚机的使用方式也各有不同,可以使用单独的虚机,也可以使用弹性虚机池来做自动的水平扩容,同时可以使用高可用虚机来规避意外宕机的风险。

  • 存储 - 块存储,文件存储,对象存储等

    S3宕机事件对全球互联网公司的影响可见一斑,企业对高性能,廉价的存储依赖性越来越强,尤其是步入AI时代,数据内容上至几十个GB的二进制文件,下到几个字节的信息,依赖公有云提供的高可用存储设备极大地简化了企业搭建私有化存储的成本(想象被某字母公司的SAN存储绑架的痛苦吧)。

  • 网络 - 虚拟网络,子网,负载均衡,路由表,应用程序网关,vpn等

    大型企业在公有云部署虚机的时候,首先考虑的就是网络的划分,传统的基于二层网络的方式无法有效地对子网进行隔离,存在安全隐患,企业对使用虚拟网络进行资源的隔离有很强的需求,同时在部署应用的时候,如何通过公有云提供的有效的负载均衡,应用网关实现流量分发也是一个非常常见的应用场景。翻墙?哦……额……我好像刚才打酱油去了。

  • CDN - 节点数量,延迟等

    对于很多互联网公司来说,CDN是一个必须的选择,尤其是视屏点播,直播行业,即使是一般的中小型公司,其网站上的很多静态内容,比如图片,音乐等也需要通过CDN加速来提高用户体验。不用CDN也行,那你得壕到购买足够的带宽来满足那些疯狂的下载吧……

  • 数据库 - mysql,mongodb等

    还在使用传统的在虚机上安装数据库软件的方式来搭建数据库服务吗?那你out了,公有云提供的DBaaS服务已经被很多公司采纳,数据库服务也算是公有云PaaS层面里卖的最好的服务了,支持开源,支持容灾备份,省去招募DBA的麻烦,没有平台lock-in的问题,为啥不用?

  • 容器服务 - Docker, DC/OS, Kubernetes, Swarm等

    看看目前Docker有多么火爆,不使用容器几乎出门都不好意思和人打招呼了。不多解释!

我相信上面几个服务应该能够涵盖绝大部分互联网公司的绝大部分业务场景。小编也了解一些国内公有云厂商的IaaS,PaaS销售情况,基本上以上列出的服务就是他们买的最好的几个服务,可以看出,目前国内云计算还处于起步阶段,IaaS的占有率远远高于PaaS,估计在未来几年内,PaaS,SaaS的接受程度会越来越高,同时开放的程度也会越来越高,到时用户既可以享受PaaS带来的开发的便利,又能避免云商平台依赖,两全其美,额……额,跑题了。

对比角度

既然是深度分析,那就得多选几个角度,为了和那些网上极具误导性的评测有所区别,小编选择真正试用两家公有云厂商的对应的服务,通过数据分析,性能跑分来得出一个相对客观的结论,而不是盲目转载,人云亦云。

  • 虚机
    • 运行性能 - 虚机性能是不是宣称的那种性能,有没有偷工减料
    • 安全性 - 创建出的虚机是否足够安全,会不会被人攻击
    • 高可用 - 虚机有没有备份,万一挂了怎么办
    • CLI支持 - 是否有命令行支持,对码农是否友好
    • 部署模板 - 是否支持使用模板大规模部署
    • 品类/规格支持 - windows、linux,几个核心,几G内存,是不是SSD
    • 价格 - 价格是否足够公道
  • 存储
    • 品类/规格支持 - 是否具有块存储,文件存储,对象存储
    • 运行性能 - 是否足够快
    • 安全性 - 是否有安全隐患
    • 高可用 - 是否具有异地容错
    • 价格 - 价格是否足够公道
  • 网络
    • 支持种类 - 是否有虚拟网络,子网,路由,LB,应用程序网关,VPN,高速通道等等
    • 带宽和价格 - 具备多少带宽,价格是否足够公道
  • CDN
    • 节点数量 - 全球多少个节点?中国有多少个节点?
    • 访问速度 - 是否足够快
    • 稳定性 - 是否足够稳定
    • 价格 - 价格是否足够公道
  • 数据库
    • 品类支持 - SQL, NoSQL,数据仓库……
    • 性能 - 性能是否足够好
    • 价格 - 价格是否足够公道
  • 容器服务
    • 易用性 - 是否足够容易部署和使用
    • 灵活性 - 是否足够灵活,支持不同编排引擎
    • 扩展性 - 是否支持动态扩展
    • 价格 - 价格是否足够公道

虚机

  1. 运行性能

    小编分别在阿里云和Azure上创建了一个虚机,虚机的规格如下:

    阿里云Azure
    系列III, 均衡型mn4, 2核8GB, I/O优化, SSDDS2标准, 2核7GB,SSD
    物理机规格:Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz物理机规格:Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz

    我们主要对比两个方面,CPU和IOPS,现在流行跑分,那咱们就跑个分试试,我们采用UnixBench软件来跑一下CPU, 先看看阿里云的表现:

    Benchmark Run: Tue Mar 14 2017 10:40:43 - 11:08:33
    2 CPUs in system; running 1 parallel copy of tests
    
    Dhrystone 2 using register variables       28893334.8 lps   (10.0 s, 7 samples)
    Double-Precision Whetstone                     2328.3 MWIPS (10.0 s, 7 samples)
    Execl Throughput                               3781.1 lps   (30.0 s, 2 samples)
    File Copy 1024 bufsize 2000 maxblocks        974951.9 KBps  (30.0 s, 2 samples)
    File Copy 256 bufsize 500 maxblocks          259734.8 KBps  (30.0 s, 2 samples)
    File Copy 4096 bufsize 8000 maxblocks       3034045.5 KBps  (30.0 s, 2 samples)
    Pipe Throughput                             1757059.1 lps   (10.0 s, 7 samples)
    Pipe-based Context Switching                  44413.0 lps   (10.0 s, 7 samples)
    Process Creation                               9371.5 lps   (30.0 s, 2 samples)
    Shell Scripts (1 concurrent)                  10488.0 lpm   (60.0 s, 2 samples)
    Shell Scripts (8 concurrent)                   2075.7 lpm   (60.0 s, 2 samples)
    System Call Overhead                        3131434.5 lps   (10.0 s, 7 samples)
    
    System Benchmarks Index Values               BASELINE       RESULT    INDEX
    Dhrystone 2 using register variables         116700.0   28893334.8   2475.9
    Double-Precision Whetstone                       55.0       2328.3    423.3
    Execl Throughput                                 43.0       3781.1    879.3
    File Copy 1024 bufsize 2000 maxblocks          3960.0     974951.9   2462.0
    File Copy 256 bufsize 500 maxblocks            1655.0     259734.8   1569.4
    File Copy 4096 bufsize 8000 maxblocks          5800.0    3034045.5   5231.1
    Pipe Throughput                               12440.0    1757059.1   1412.4
    Pipe-based Context Switching                   4000.0      44413.0    111.0
    Process Creation                                126.0       9371.5    743.8
    Shell Scripts (1 concurrent)                     42.4      10488.0   2473.6
    Shell Scripts (8 concurrent)                      6.0       2075.7   3459.5
    System Call Overhead                          15000.0    3131434.5   2087.6
                                                                       ========
    System Benchmarks Index Score                                        1356.5

    再看看Azure的表现:

    Benchmark Run: Tue Mar 14 2017 03:54:37 - 04:22:49
    2 CPUs in system; running 1 parallel copy of tests
    
    Dhrystone 2 using register variables       31016615.6 lps   (10.1 s, 7 samples)
    Double-Precision Whetstone                     2296.6 MWIPS (9.4 s, 7 samples)
    Execl Throughput                               4170.9 lps   (30.0 s, 2 samples)
    File Copy 1024 bufsize 2000 maxblocks       1122976.2 KBps  (30.2 s, 2 samples)
    File Copy 256 bufsize 500 maxblocks          296283.5 KBps  (30.2 s, 2 samples)
    File Copy 4096 bufsize 8000 maxblocks       3369929.7 KBps  (30.2 s, 2 samples)
    Pipe Throughput                             2275748.1 lps   (10.1 s, 7 samples)
    Pipe-based Context Switching                  82221.5 lps   (10.1 s, 7 samples)
    Process Creation                              10339.1 lps   (30.3 s, 2 samples)
    Shell Scripts (1 concurrent)                  11504.2 lpm   (60.5 s, 2 samples)
    Shell Scripts (8 concurrent)                   2209.5 lpm   (60.6 s, 2 samples)
    System Call Overhead                        3484047.9 lps   (10.1 s, 7 samples)
    
    System Benchmarks Index Values               BASELINE       RESULT    INDEX
    Dhrystone 2 using register variables         116700.0   31016615.6   2657.8
    Double-Precision Whetstone                       55.0       2296.6    417.6
    Execl Throughput                                 43.0       4170.9    970.0
    File Copy 1024 bufsize 2000 maxblocks          3960.0    1122976.2   2835.8
    File Copy 256 bufsize 500 maxblocks            1655.0     296283.5   1790.2
    File Copy 4096 bufsize 8000 maxblocks          5800.0    3369929.7   5810.2
    Pipe Throughput                               12440.0    2275748.1   1829.4
    Pipe-based Context Switching                   4000.0      82221.5    205.6
    Process Creation                                126.0      10339.1    820.6
    Shell Scripts (1 concurrent)                     42.4      11504.2   2713.2
    Shell Scripts (8 concurrent)                      6.0       2209.5   3682.5
    System Call Overhead                          15000.0    3484047.9   2322.7
                                                                       ========
    System Benchmarks Index Score                                        1571.8
    

    结论:Azure虚机逆袭成功,在物理主机CPU主频并不占优势的情况下仍然跑出了比阿里云主机高的分数,证明Azure的虚机性能更加接近物理机,这方面阿里云要差一点。

    接下来看看IOPS,小编使用的软件是fio,请看下面的跑分结果:

    阿里云IOPS:

    test: (g=0): rw=randrw, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
    fio-2.0.9
    Starting 1 process
    test: Laying out IO file(s) (1 file(s) / 4096MB)
    Jobs: 1 (f=1): [m] [99.9% done] [3696K/1200K /s] [924 /300  iops] [eta 00m:01s]
    test: (groupid=0, jobs=1): err= 0: pid=7652: Thu Mar 16 16:29:56 2017
      read : io=3071.5MB, bw=3598.1KB/s, iops=899 , runt=874109msec
      write: io=1024.6MB, bw=1200.3KB/s, iops=300 , runt=874109msec
      cpu          : usr=0.22%, sys=0.97%, ctx=400434, majf=0, minf=5
      IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
         submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
         complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
         issued    : total=r=786282/w=262294/d=0, short=r=0/w=0/d=0
    
    Run status group 0 (all jobs):
       READ: io=3071.5MB, aggrb=3598KB/s, minb=3598KB/s, maxb=3598KB/s, mint=874109msec, maxt=874109msec
      WRITE: io=1024.6MB, aggrb=1200KB/s, minb=1200KB/s, maxb=1200KB/s, mint=874109msec, maxt=874109msec
    
    Disk stats (read/write):
      vda: ios=786117/262772, merge=0/370, ticks=41796276/14123960, in_queue=55922596, util=100.00%
    

    Azure的IOPS:

    test: (g=0): rw=randrw, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
    fio-2.0.9
    Starting 1 process
    test: Laying out IO file(s) (1 file(s) / 4096MB)
    Jobs: 1 (f=1): [m] [99.6% done] [24003K/7996K /s] [6000 /1999  iops] [eta 00m:02s]
    test: (groupid=0, jobs=1): err= 0: pid=24097: Thu Mar 16 08:29:12 2017
      read : io=3073.6MB, bw=5961.4KB/s, iops=1490 , runt=527954msec
      write: io=1022.5MB, bw=1983.2KB/s, iops=495 , runt=527954msec
      cpu          : usr=0.36%, sys=1.61%, ctx=84227, majf=0, minf=4
      IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
         submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
         complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
         issued    : total=r=786826/w=261750/d=0, short=r=0/w=0/d=0
    
    Run status group 0 (all jobs):
       READ: io=3073.6MB, aggrb=5961KB/s, minb=5961KB/s, maxb=5961KB/s, mint=527954msec, maxt=527954msec
      WRITE: io=1022.5MB, aggrb=1983KB/s, minb=1983KB/s, maxb=1983KB/s, mint=527954msec, maxt=527954msec
    
    Disk stats (read/write):
      sda: ios=786008/261655, merge=0/176, ticks=25589900/9240936, in_queue=34830976, util=100.00%
    

    结论:Azure(IOPS read 1490 write 495)完胜阿里云(IOPS read 899 write 300)

  2. 安全性

    阿里云和Azure在创建虚机的过程中都提供了网络安全组来限制虚机端口被外部访问,起到了很好的防护效果,用户在使用虚机的过程中,可以修改网络安全组的规则,添加或者删除入栈和出栈的规则来打开关闭外部端口。

    小编在使用阿里云创建ubuntu虚机的过程中发现,阿里云不支持创建过程中指定ssh公钥来启用证书登录,只能填写密码,最让人不可思议的是默认用户竟然是root,不太了解阿里云为什么会暴露root用户,无论是aws还是azure在创建虚机的过程中都可以指定用户名,并且默认禁止root登录。

    这里写图片描述

    另外Azure支持一项KeyVault服务,这项服务允许在创建虚机的过程中动态向KeyVault中获取虚机的密钥信息,这样就可以完全避免密码或者证书暴露在命令行或者配置文件中,起到了很好的保护作用。

    这里写图片描述

    结论:虚机是否足够安全决定了使用公有云的企业对外提供服务的水平和质量,Azure在围绕虚机安全性上提供了非常多的选择,反观阿里云在虚机的安全性上做的还不够到位。

  3. 高可用

    所谓高可用是指双虚机备份,这样当其中一台机器发生故障的时候,另一台虚机能够马上接替工作,保证客户的业务不受影响,azure在创建虚机的过程中可以指定高可用方案,下图是azure的高可用架构图:

    这里写图片描述

    而阿里云在创建虚机的时候无法指定高可用备份,一旦宕机就会影响。

    结论:虽然目前云计算行业发展的如火如荼,但是估计哪家都不敢拍胸脯保证虚机永远稳定,Azure的高可用虚机给客户提供了更安全的保障,对于那些有极度重要数据或者承载非常重要的计算任务的机器,使用高可用方案进行双虚机备份显得很有必要,要不哪天Xen又爆出一个bug,那阿里云的虚机估计又要遭殃一片。

  4. CLI支持

    作为一个经常使用公有云的码农,每天在UI界面上滑动鼠标去操作显得十分低效,想要自动化完成各种工作,命令行工具必不可少,阿里云和Azure对命令行工具的支持如何呢?

    比较内容阿里云Azure
    安装方式pipnpm, docker,pip, installer
    支持服务极少数常用服务: ecs, ess, mts, rds, slb几乎全部服务: account ,acs ,ad ,availset ,batch ,cdn ,config ,datalake ,feature ,group ,hdinsight ,insights ,keyvault ,location ,network ,policy ,provider ,rediscache ,resource ,role ,storage ,tag ,usage ,vm ,vmss ,vmssvm ,webapp
    SDK支持JAVA,Python,PHP,C#C#, JAVA, Python, Ruby, Go, node, PHP, C, .net

    作为一个老牌的开发者工具厂商,微软Azure在CLI和SDK这块的投入是非常有优势的,几乎涵盖了所有主流编程语言,官方文档,GitHub上有非常丰富的代码和实例供开发者参考,同时微软把azure sdk整合到visual studio和vscode中,使得开发者可以非常方便地在IDE中调试和部署云端的代码。

    相比之下,阿里云目前在这个领域还是处于起步阶段,目前支持少数几种常用语言,CLI支持的服务种类也相对较少,只有5种最常用的阿里云服务,阿里云自己没有IDE,也很难整合整个开发,测试,部署链条。

    结论:Azure作为目前微软主推的业务,微软会倾尽全力支持开发者在其上构建云应用,在对开发者的支持上面说Azure直接秒掉阿里云应该不为过吧?

  5. 部署模板

    当需要大批量部署N个虚机的时候,或者需要使用版本控制软件记录虚机规格变更的时候,使用传统的UI方式来手动选择虚机的规格和其他相关配置的时候显得无比低效,阿里云推出了资源编排服务ROS用来使用模板来创建虚机,同样的Azure也有ARM模板,通过CLI+模板的方式,用户可以高效率地自动化部署相应的虚机。

    同时Azure和阿里云都在开发基于terraform的模板部署项目,下面我们详细对比一下阿里云和Azure的模板有何异同:

    比较内容阿里云Azure
    支持的服务cs, ecs, ess, memcache, mongodb, marketplace, oss, ram, rds, redis, ros, slb, slsaccount ,acs ,ad ,availset ,batch ,cdn ,config ,datalake ,feature ,group ,hdinsight ,insights ,keyvault ,location ,network ,policy ,provider ,rediscache ,resource ,role ,storage ,tag ,usage ,vm ,vmss ,vmssvm ,webapp
    函数支持极少量 <10五大类,超过几十种,Numeric functions, String functions, Array functions, Deployment value functions, Resource functions
    terraform支持少量大部分

    阿里云资源编排服务在函数支持上面相对Azure较为单薄,常用的场景可以支持,但是针对一些复杂的特殊模板在灵活性上比Azure的ARM模板要逊色一些。不过对于开发者来说已经能够满足很大一部分需求。

    结论:Azure ARM模板的功能和灵活性远好于阿里云。

  6. 品类和规格

    比较内容阿里云Azure
    虚机镜像Windows,ubuntu,SUSE linux,OpenSUSE,FreeBSD, Debian,CoreOSWindows,ubuntu,SUSE linux,OpenSUSE,FreeBSD, Debian,CoreOS, CentOS
    虚机规格阿里云虚机详情Azure虚机详情
    磁盘高效云盘,ssdhdd,ssd

    从虚机的镜像类型和规格种类上看阿里云和Azure平分秋色,磁盘的选择上大家都提供了传统的硬盘和SSD。阿里云物理机器采用了Intel(R) Xeon(R) CPU E5-2682,主频为2.5G,Azure采用的物理机器是Intel(R) Xeon(R) CPU E5-2673,主频为2.4G。但是有趣的是阿里云虚机在一个配置较高的物理机器上并没有跑出一个高于Azure虚机的分数。

    结论:阿里云作为电商起家的公司,在产品门类上当然不甘落后,Azure和阿里云在这方面平分秋色。

  7. 价格

    以前Azure中国的定价比阿里云要高出不少,但是在今年的2月份,Azure中国的虚机价格全线下调,目前的价格应该还算比较有竞争力的,但是比起阿里云来讲还略微有点高,不过差距并不算太大。小编这里选出几个常用的linux虚机规格,并把阿里云和Azure的价格放在一起做个对比(这里选择阿里云IO优化虚机和Azure Av2系列,D系列):

    (单位:元/小时)阿里云Azure
    1核2GB0.280.43
    1核4GB0.490.44
    2核4GB0.650.86
    2核8GB1.020.92
    4核8GB1.351.73
    4核16GB2.041.85
    8核16GB2.693.01
    8核32GB4.083.73
    16核128GB13.8313.83
    16核64GB8.178.17

    需要特殊留意的是,这里的x核xxGB只是一个基本值,对于Azure虚机来讲内存的大小可能略有不一样,具体的价格请参考官方网站

    阿里云虚机详情

    Azure虚机详情

    结论:电商起家的公司在打价格战上确实有一手,Azure在这方面确实逊色一筹。

综上所述,Azure提供的虚机从性能,可靠性,安全性和开发者支持上要比阿里云更加有优势,从价格上讲阿里云更加亲民。几个方面综合考量以后,小编认为:

Azure中国阿里云
⭐⭐⭐⭐⭐⭐⭐

存储

  1. 品类/规格支持

    • 阿里云存储有:OSS对象存储,表格存储。OSS类似于AWS的S3,表格存储是一种NoSQL的机制,用于存储结构化,半结构化的数据,支持海量数据。
    • Azure中国的存储采用存储账号的机制,一个存储账号下面会建立三种存储方式:blob存储,queue存储,table存储。

    阿里云的OSS对应Azure里面的blob存储,表格存储对应Azure的table存储,小编没有发现阿里云有类似Azure队列存储的服务,姑且认为阿里尚无提供类似的服务(阿里云消息队列服务和Azure的ServiceBus类似,和这里的queue存储不同)。

    结论:Azure提供了更为丰富的存储支持。

  2. 运行性能

    对于开发者,企业来讲,简单对象存储是绝大多数业务场景用到的服务,小编这里就针对Azure中国和阿里云的对象存储服务进行一下性能测试。

    首先小编在阿里云上开通了一个OSS服务:

    这里写图片描述

    同时也在Azure中国开通了一个存储账号:

    这里写图片描述

    按照阿里云官方github上给出的示例,小编简单写了一个小程序:

    import oss2
    import time
    
    endpoint = 'http://oss-cn-shanghai.aliyuncs.com'
    
    auth = oss2.Auth('xxx', 'xxx')
    bucket = oss2.Bucket(auth, endpoint, 'bucket-xxx')
    
    key = 'story.txt'
    
    now = time.time()
    for i in range(100):
        bucket.put_object(key + str(i), 'Ali Baba is a happy youth.')
    end = time.time()
    print (end - now)/100
    
    now = time.time()
    for i in range(100):
        bucket.get_object(key+str(i)).read()
    
    end = time.time()
    print (end-now)/100

    程序很简单,向阿里云OSS中插入一个字符串,一共插入100次,然后取平均时间,然后读取100次,再取个平均时间。同理,我们在Azure的虚拟机上也创建类似的程序:

    from azure.storage.blob import BlockBlobService
    import time
    
    blob_service = BlockBlobService(account_name='xxx', account_key='xxx', endpoint_suffix='core.chinacloudapi.cn')
    
    now = time.time()
    for i in range(100):
        blob_service.create_blob_from_text("bucket", "test"+str(i), "Microsoft love linux.")
    end = time.time()
    
    print (end-now)/100
    
    now = time.time()
    for i in range(100):
        blob_service.get_blob_to_text("bucket", "test"+str(i))
    end = time.time()
    
    print (end-now)/100

    程序运行结果如下:

    单位:毫秒阿里云Azure
    read27.536098957110.3953289986
    write59.721279144313.1089496613

    结论:继虚机性能逆袭阿里云之后,Azure中国对象存储服务性能再次完胜阿里云。

  3. 安全性

    阿里云的OSS和Azure中国的存储服务都有:私有,公共读,公共读写的功能,阿里云OSS提供STS和URL鉴权和授权机制,和Azure类似,都具有账号权限控制功能。阿里云和Azure都提供了监控机制来查看存储的信息和统计数据。但是阿里云的OSS传输过程采用http协议,而Azure中国的blob存储传输采用https,显然要比阿里云更加值得信赖。

  4. 高可用

    阿里云和Azure中国的存储服务都具有异地冗余的功能,不同的是Azure需要在创建存储账户的时候指定,阿里云在创建bucket之后,在设置页面指定。Azure中国同时也提供了本地冗余机制。用户可以在创建过程中选择。阿里云由于国内数据中心数量比Azure中国要多,所以提供的异地冗余的地点也相对较多。

  5. 价格

    阿里云的OSS价格相对固定,Azure中国的价格根据数据体量的不同有不同的定价,但是差别不算太大,对于中小型企业来讲,数据量不太离谱的话,下面这个价格应该可以做个参考。

    单位:元/GB/月阿里云Azure
    低频访问(cold)0.080.11
    高频访问(hot)0.1480.149
    定价官网阿里云OSS定价Azure中国存储定价

    阿里云略微比Azure便宜一点点。

综上所述,Azure中国的存储在性能,安全性上强于阿里云,阿里云只在价格上略胜一筹。因此小编认为:

Azure中国阿里云
⭐⭐⭐⭐⭐⭐⭐

网络

  1. Azure和阿里云支持的网络服务的种类有:

    阿里云Azure
    * 负载均衡
    * 高速通道
    * vpc
    * nat网关
    * API网关
    * 虚拟网络
    * 负载均衡
    * 应用程序网关
    * 虚拟网络网关
    * 本地网络网关
    * 路由表
    * 高速通道
    * 网络安全组
    * VPN

    阿里云和Azure中国都支持虚拟网络,用户可以建立一个虚拟网络,并把虚机加入这个网络,不同虚拟网络的虚机相互隔离。两者都支持在虚拟网络中划分子网,指定地址范围。两者都支持网络安全组,用户可以配置网络安全组的入栈出栈规则来限制外界和虚拟网络之间的流量。

    阿里云和Azure中国都支持负载均衡器,提供L3的负载均衡,同时也都提供了API网关,支持L7的流量分发。对于公有云和私有数据中心的连接,两者都提供了高速通道,通过虚拟的专线将混合云打通。

    此外,Azure中国提供了VPN的功能,支持将不同数据中心的虚拟网络连接起来,Azure中国也提供了路由表功能,用户可以创建自定义路由规则,为开发运维人员提供了非常的便利。

    结论:两者都提供了丰富的网络服务满足企业绝大部分使用场景,Azure提供了更为灵活的路由表和VPN方案。

  2. 带宽和价格

    阿里云在创建虚机的时候可以指定固定带宽或者按流量计费,使用固定带宽大约价格是:

    带宽单价预计一个月
    25M5.31元/小时3823元
    50M11.56元/小时8323元
    100M24.06元/小时17323元

    (小编此时不禁长大嘴巴,原来使用阿里云的客户都是壕,啊呜~~~)

    使用流量计费的话大约0.8元/GB

    相比之下,Azure中国的带宽计费方式是按流量计费,每个月用户可以免费使用1T(1024GB)流量,超出部分计费标准为:0.67元/GB

    结论: 阿里云固定带宽模式费用惊人,Azure中国在流量计费上比阿里云有优势。

  3. 技术细节

    阿里云虚机采用的经典网络曾经在网上引起热议,感兴趣的同学可以自行搜索,小编没有在阿里工作过,也不太了解阿里云底层的网络实现,不过小编坚信无风不起浪,既然能够引起很多人的热议,那本身这件事情就值得玩味。

    安全组设置错误,这些机器暴露给了其他阿里云用户,也就是说主要某个阿里云邻居用户被黑,他都可以通过扫描进入我们的系统。

    相比之下,Azure的底层网络实现就更加安全:

    这里写图片描述

    具体的技术细节请参考:https://technet.microsoft.com/en-us/library/mt238303.aspx

综上所述,小编认为服务种类不在多而是在更安全,Azure网络的安全性更值得信赖(至少小编还没有发现网上有人对Azure的网络底层实现有过“大讨论”)。

Azure中国阿里云
⭐⭐⭐⭐⭐⭐⭐

CDN

  1. 节点数量

    小编这里主要比较两家厂商在国内的节点数量(Azure全球节点数量拿出来可能会吓到某些童鞋),废话不说,上图:

    阿里云Azure
    这里写图片描述这里写图片描述

    话说小编也尝试仔细看清楚每家的具体节点数量,怎奈老眼昏花,目测貌似Azure中国的节点数量多一点,有兴趣的童鞋可以火眼金睛数一下。

    不过不纠结于绝对数量了,节点覆盖到一定程度,大家比拼的就是服务的质量,两家都提供了web加速,下载加速,内容预取,监控,报表分析等等。这个环节小编认为两家云厂商平分秋色。

    结论:Azure中国和阿里云平分秋色。

  2. 访问速度

    为了公平起见,小编分别在阿里云官网和Azure官网选了两个已经被各自的CDN加速过的图片:
    https://img.alicdn.com/tps/TB1bzN0PVXXXXbrXXXXXXXXXXXX-1600-1120.png
    https://resource.cdn.azure.cn/marketing-resource/media/images/homepage/homepage-banner-powerBI-embeded.png

    两张图片大小差不多,都是38-39KB的样子,小编使用http://www.17ce.com网站对这个图片的CDN加速进行测试,首先看看阿里云的测试结果:

    这里写图片描述

    下面是AzureCDN的测试结果:

    这里写图片描述

    结论:Azure中国CDN的下载速度略比阿里云CDN慢,阿里云胜出。

  3. 稳定性

    阿里云CDN在去年底发生过全国性的大规模故障,下面是小编从网上摘录的一段:

    阿里云CDN整个瘫痪,使用该服务的企业无一幸免,甚至连天猫都曝出不能访问。要知道,这离工信部12号给阿里云发放CDN业务经营许可证才过去5天而已,更严重的是,这已是两个月内阿里云遭受的第4次大的诟病。

    阿里云、阿里CDN无疑在砸自己的招牌,用户也只能用脚投票,迁往其他平台。

    Azure中国CDN目前没有发生类似的情况,相对来说比较稳定。

    结论: Azure中国CDN服务的稳定性高于阿里云。

  4. 价格

    阿里云提供了两种计费方式:按峰值带宽计费按流量计费。下面是按峰值带宽计费的说明:

    这里写图片描述

    下面是按流量计费的对比:

    单位:元/GB阿里云Azure
    0GB-10TB(含)0.290.33
    10TB-50TB(含)0.270.30
    50TB-100TB(含)0.260.27
    > 100TB(含)0.240.24

    结论:Azure中国的CDN服务价格和阿里云基本持平,某些区间略微高一点,阿里云在价格方面又一次以微弱优势胜出。

综上所述,CDN的稳定性和速度对终端用户体验至关重要,考虑到阿里云CDN的大规模宕机事件,其稳定性让人堪忧,因此小编认为在CDN的评比上Azure中国胜出。

Azure中国阿里云
⭐⭐⭐⭐⭐⭐⭐

数据库

  1. Azure和阿里云支持的数据库的种类有:

    阿里云Azure
    * MySQL
    * SQL Server
    * PostgreSQL
    * PPAS
    * OceanBase
    * Redis
    * Memcache
    * TableStore
    * MongoDB
    * HBase
    * PetaData
    * SQL Server
    * SQL Warehouse
    * SQL Server Stretch DB
    * MySQL
    * Redis
    * DocumentDB(兼容MongoDB)
    * TableStorage
    * HBase(HDInsights提供)

    两家都提供了主流的数据库供大家使用,包括MySQL/SQL Server/Redis/MongoDB。除此之外,阿里和Azure各自提供了自己独有的一些SQL服务,比如阿里云提供的OceanBase分布式数据库,兼容MySQL协议,Azure提供了SQL Warehouse满足用户PB级数据操作的需求,两家公司都提供HBase,不同的是阿里云将HBase作为单独的一个数据库服务,而Azure把HBase作为HDInsights里面的一个子功能。

    结论,从数量上阿里云胜出,考虑到实际对用户产生的价值,Azure和阿里提供的功能基本上能够满足绝大部分用户的需求,此轮比拼阿里胜出。

  2. MySQL性能对比

    小编在阿里云上创建了一个2核4GB的MySQL数据库服务器,采用按量计费的话,这个虚机的价格在993.6元/月

    这里写图片描述

    在Azure上创建Mysql数据库的时候略有不同,Azure不是根据CPU和内存的指标来选择服务器,而是根据(DTU)给出了几种配置:MS1~MS6,小编选择了一个价格和阿里云RDS很接近的型号: MS4

    这里写图片描述

    接下来我们使用sysbench来测试一下每个数据库的性能,公平起见,小编通过各自内网的虚机去执行测试命令。下面的命令是我用来跑测试的命令:

    准备数据:

    sysbench --test=oltp 
        --mysql-table-engine=innodb 
        --oltp-table-size=400000 
        --mysql-db=test 
        --mysql-user=xxx 
        --mysql-host=xxx.mysql.rds.aliyuncs.com 
        --mysql-password='xxx'  
        prepare

    运行测试:

    sysbench --num-threads=100 
        --max-requests=4000 
        --test=oltp 
        --mysql-table-engine=innodb 
        --oltp-table-size=400000 
        --mysql-db=test 
        --mysql-user=xxx 
        --mysql-host=rm-xxx.mysql.rds.aliyuncs.com 
        --mysql-password='xxx' 
        run

    先看看阿里云RDS的性能:

    OLTP test statistics:
        queries performed:
            read:                            56000
            write:                           20000
            other:                           8000
            total:                           84000
        transactions:                        4000   (410.02 per sec.)
        deadlocks:                           0      (0.00 per sec.)
        read/write requests:                 76000  (7790.41 per sec.)
        other operations:                    8000   (820.04 per sec.)
    
    Test execution summary:
        total time:                          9.7556s
        total number of events:              4000
        total time taken by event execution: 970.2066
        per-request statistics:
             min:                                 46.97ms
             avg:                                242.55ms
             max:                                550.05ms
             approx.  95 percentile:             398.56ms
    
    Threads fairness:
        events (avg/stddev):           40.0000/1.91
        execution time (avg/stddev):   9.7021/0.05

    下面是Azure中国MS4的性能:

    OLTP test statistics:
        queries performed:
            read:                            56000
            write:                           20000
            other:                           8000
            total:                           84000
        transactions:                        4000   (436.33 per sec.)
        deadlocks:                           0      (0.00 per sec.)
        read/write requests:                 76000  (8290.25 per sec.)
        other operations:                    8000   (872.66 per sec.)
    
    Test execution summary:
        total time:                          9.1674s
        total number of events:              4000
        total time taken by event execution: 907.5142
        per-request statistics:
             min:                                 63.24ms
             avg:                                226.88ms
             max:                                966.83ms
             approx.  95 percentile:             641.12ms
    
    Threads fairness:
        events (avg/stddev):           40.0000/1.87
        execution time (avg/stddev):   9.0751/0.08

    对比一下:

    比较内容阿里云Azure
    每秒事务数量410.02436.33
    每秒读写请求7790.418290.25
    平均处理时间242.55ms226.88ms

    结论:在相同价格下,Azure的MySQL数据库依旧跑出了比阿里云更好的分数。Azure MySQL性能胜出。

  3. SQL Server的性能对比

    Microsoft SQL Server作为比较常用的商用数据也有比较高的市场占有率,很多企业也是选择SQL Server作为后台数据提供服务,阿里云RDS和Azure中国都提供了SQL Server的服务,不同的是阿里云SQL Server是采用2008R2版本搭建,而Azure的SQL Server是微软针对云计算专门优化过的。下面是两者版本的对比:

    阿里云SQL Server版本:

    Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) 
    Jun 28 2012 08:36:30 
    Copyright (c) Microsoft Corporation
    Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

    Azure中国SQL Server版本:

    Microsoft SQL Azure (RTM) - 12.0.2000.8 Feb 8 2017 04:15:27 
    Copyright (C) 2016 Microsoft Corporation. All rights reserved.

    阿里云和Azure的SQL Server定价机制和MySQL类似,阿里云通过CPU内存规格定价,Azure通过DTU来定价,为了方便比较,小编这里通过统一的价格来对比两者的性能差别,我们这里选用阿里云2核心8GB,500GB磁盘的规格,采用按需付费的话,大概的价格是5.02元/小时。Azure中国SQL Server我们使用P1版本,价格是3000多一个月,平均到小时的话大概4元/小时

    单位:元/小时阿里云Azure
    价格5.024.00

    Azure SQL Server价格比阿里云便宜,是不是性能就不如阿里云呢?接下来我们拭目以待:

    小编首先使用下面的脚本来测试双方的数据库的写入性能:

    -- Create TestUpdTable for UPDATE test
        CREATE TABLE [dbo].[TestUpdTable](
            [pk] [int] IDENTITY(1,1) PRIMARY KEY,
            [col1] [int] NULL,
            [col2] [int] NULL,
            [col3] [int] NULL,
            [col4] [int] NULL,
            [col5] [int] NULL,
            [col6] [datetime] NULL,
            [col7] [datetime] NULL,
            [col8] [datetime] NULL,
            [col9] [datetime] NULL,
            [col10] [datetime] NULL,
            [col11] [varchar](20) NULL,
            [col12] [varchar](20) NULL,
            [col13] [varchar](20) NULL,
            [col14] [varchar](20) NULL,
            [col15] [varchar](20) NULL
        ) ON [PRIMARY]
        GO
    
        DECLARE @val INT
        SELECT @val=1
        WHILE @val < 100000
        BEGIN
          INSERT INTO [dbo].[TestUpdTable]
             ([col1],[col2],[col3],[col4],[col5],
              [col6],[col7],[col8],[col9],[col10],
              [col11],[col12],[col13],[col14],[col15])
            VALUES
             (@val,@val,@val,@val,@val,
              getdate(),getdate(),getdate(),getdate(),getdate(),
              'test' + cast(@val as varchar),'test' + cast(@val as varchar),
              'test' + cast(@val as varchar),'test' + cast(@val as varchar),
              'test' + cast(@val as varchar))
          SELECT @val=@val+1;
        END;

    小编使用的是MAC版本的Navicat,输入运行脚本后,得到的结果如下:

    单位:秒阿里云Azure
    耗时260.51125.13

    结论:Azure SQL Server的性能在同等价格下是阿里云的2倍还多一点。

    接下来看看Select的性能:

    DECLARE @val INT
    SELECT @val=1
    WHILE @val < 100000
    BEGIN
      select * from TestUpdTable where pk=15
      SELECT @val=@val+1;
    END;

    对比结果如下:

    单位:秒阿里云Azure
    耗时51.8754.38

    结论:Azure SQL Server的读取性能和阿里云的SQL Server平分秋色。

    接下来看看Update的性能,照例先上测试脚本:

    DECLARE @val INT
    SELECT @val=1
    WHILE @val < 100000
    BEGIN
      UPDATE TestUpdTable
       SET col1='23',col2='25',col3='27',
           col6=getdate()-1,col7=getdate()-1,col8=getdate()-1,
           col11='test23',col12='test25',col13='test27'
        WHERE pk=15
      SELECT @val=@val+1;
    END;
    单位:秒阿里云Azure
    耗时424.78126.53

    结论:Azure SQL Server的Update性能在同等价格下刷阿里云N条街,以至于小编一度认为是自己的脚本或者阿里云的数据库配置错误,但是经过验证后确实发现Azure SQL Server的性能远远优于阿里云。

    上面的比较还是在Azure SQL Server的价格比阿里云低的前提下,Azure还跑出了远高于阿里云的性能。在使用阿里云RDS的过程中,小编还需要强烈吐槽的是阿里云的RDS白名单的更新速度问题,小编每次设置白名单IP后,至少需要等30秒钟左右才能生效,有时甚至更长时间,有时一度让小编认为设置失败,但是Azure中国版就完全没有这个问题,网站设置生效后客户端立马连上。

    更让小编觉得阿里云奇葩的一点是,小编使用RDS获取内网FQDN后,居然在小编的电脑上也能DNS出这个FQDN的IP,解析结果竟然是个内网IP(10.x.x.x),当然无法连接。于是小编又重新开通了一个外网FQDN,这是小编在电脑上ping的时候居然发现还有DNS解析延迟(长达10分钟左右,一直是10.x.x.x),小编一度以为是本地DNS缓存的问题,在确定清掉缓存的时候发现还是不行,于是确定这个问题还是由于阿里云DNS缓存的问题。

    几个阿里云RDS的奇葩问题不禁让小编觉得,如此云计算如果要走到世界前3的话,打铁还需自身硬。

  4. 价格

    由于两个厂商提供数据库服务的计费方式有所差别,不太好从硬件层面找到一个比较点,小编这里只能按照各自官方宣称的提供的最大连接数量来做个比较,仅供参考(假设阿里云RDS存储空间在200GB)。

    单位:元/小时Azure阿里云
    50个连接0.09————
    100个连接0.18————
    500个连接0.48300个连接0.46
    1000个连接1.441200个连接1.21
    1500个连接2.16————
    2000个连接3.242000个连接2.25
    ————4000个连接3.88
    ————8000个连接7.22

    Azure数据库和阿里云的RDS在定价的方式的不同很难把它们放到一起比较,所以小编这里就不再打分了。

综上所述,Azure的数据库服务在同等价格的处理性能上要高于阿里云RDS。

Azure中国阿里云
⭐⭐⭐⭐⭐⭐⭐

容器服务

互联网行业Docker目前火得一塌糊涂,哪家公有云不支持Docker真的是不好意思出门见人了,容器服务方面,阿里云推出了自己的容器服务,Azure也推出了ACS和ACS engine。阿里云的容器服务是在Swarm的基础上封装了一层,然后作为一个PaaS服务提供出来,而Azure的容器服务策略和阿里云有所不同,Azure更关注于IaaS层面,ACS负责将容器集群运行的硬件环境搭建出来,软件层面使用开源的DC/OS, SWarm, Kubernetes三种编排引擎,用户可以在创建ACS集群的时候指定需要的编排引擎。

Azure中国目前使用ACS engine来部署容器集群,ACS engine的代码放在GitHub上,用户可以到GitHub上下载ACS engine

  1. 易用性

    阿里云通过网页UI的操作就可以简单方便地创建一个容器集群,而Azure目前需要下载ACS engine,然后编译成二进制可执行文件,通过动态生成ARM模板的方式来部署,相对来说比较繁琐和复杂。

  2. 灵活性

    阿里云的容器服务在开源的编排引擎上做了一层封装,用户很难看到底层的实现方式,所以从灵活性上要差一点,而Azure提供了足够灵活的方式,可以自由选择3种开源编排引擎,自由指定VNET。

  3. 扩展性

    阿里云容器服务支持手动往集群中添加节点,如果配置了accesskey/secret的话,容器集群也可以自动创建虚机并将它加入集群。Azure的容器服务底层节点是创建在虚拟机弹性集群上,所以不需要额外配置就能做到自动弹性扩容,目前Azure容器服务中DC/OS,Swarm已经支持弹性虚机池,Kubernetes目前还只能手动添加节点。

  4. 价格

    阿里云容器服务费用包括两部分费用:所使用资源(云服务器,负载均衡等)的费用和容器集群的管理费用。Azure容器集群目前只收取资源使用费用,鉴于两者的资源费用差距不是太大,小编认为双方在价格上基本持平。

综上所述,Azure容器服务在灵活性和扩展性性优于阿里云,而在使用的方便程度上却被阿里云甩N条街,但是Azure中国的最大问题是部署困难,阿里云的最大问题是黑盒实现,两家做的都有缺陷。最终比较结果为:

Azure中国阿里云
⭐⭐⭐⭐

结语

总结以上对每个服务的深入分析,我们把结果汇总一下,读者可以一目了然地对比阿里和Azure的各种基础服务的优劣:

厂商虚机存储网络CDN数据库容器服务
Azure中国⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
阿里云⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

作为国内第一梯队的两家云计算厂商,Azure和阿里云都提供了种类丰富的各种云服务,涵盖了IaaS,PaaS,SaaS。微软Azure作为老牌的操作系统和开发工具提供商,在云计算领域有很深厚的技术积累,在云计算基础设施中,无论是虚机,存储,网络,还是数据库,容器等服务都具有明显的性能和稳定性的优势。

阿里云作为国内本土云计算后起之秀,在追赶前辈的过程中也显示出很快的速度,但是在服务质量上和知名云计算厂商还有着不小的差距。小编在使用阿里云Web管理控制台的过程中遇到了不少小bug,阿里云应该花更多的时间和精力在完善自己的产品上,这样才能更好的在和国际巨头竞争的过程中不掉队。

最后

以上就是天真世界为你收集整理的深度解析国内公有云大厂基础实力的全部内容,希望文章能够帮你解决深度解析国内公有云大厂基础实力所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部