云端选型篇

1.全球云厂商占比前三名:亚马逊云、微软云、阿里云

2.全球云厂商特点:在海外的业务部署,建议优先选择亚马逊。在国内互联网业务部署上,建议优先选择阿里云。在私有云、私有化传输方面,建议尝试用华为云。游戏方面建议尝试腾讯云。若对云产品功能特性、存储或者其他细分领域有需求,建议用Ucloud、七牛云等。

3.阿里云产品概要: 阿里云共发布了近200个产品,主要有7大类,包括人工智能、云计算基础、物联网、大数据、安全、企业应用、开发者服务。这多么多产品,必须要选择的有5个云产品:

  1) ECS(Elastic Compute Service)云服务器

  2) RDS (Relational DataBase Service)  关系型数据库

  3) SLB(Service Load Balancer)负载均衡

  4) OSS(Object Storage Service)  对象存储服务

  5) VPC(Virtual Private Cloud)  专有网络

  当然还有很多大家熟悉的云产品,比如CND、Reids等相关产品,不是必须的。

4.在实际部署中,要让数据库达到最佳性能,我们一般采用CPU和内存配比为1:4,如4核16GB,8核32GB。

5.选择自建环境的条件:主要从功能性和灵活性等方面考虑,这是自建的相对优势,云产品如SLB、RDS、CDN等,其核心都是基于开源技术进行了封装并做了相应优化,但同时也给我们带来了相应的限制。

  如:1)云SLB产品已经支持虚拟主机,具有七层代表性的核心功能,想用Rewrite等更多七层功能,只能在ECS上搭建Nginx.

    2) 云Redis产品必须有密码鉴权,如果客户应用系统框架不支持鉴权,只能在ECS上搭建Redis。

    3) 云RDS MySQL不支持Myisam存储引擎,如果客户需要使用,只能在ECS上搭建Mysql。

6.云产品技术优势:默认做了一些安装配置、调优方面、备份方面、高可用方面、安全性方面.

7.云端网络选型:云端目前可选的网络架构包括:经典网络、VPC专有网络、金融云网络等,金融云网络也是基于VPC的专有网络。使用经典网络与VPC专有网络的技术特点对比如下:

  1) 网段方面

    经典网络的内网是以10开头的随机ip,且内网IP只能随机分配,不能自定义。

    VPC专有网络,每个客户都是独立的网络环境,客户可以自定义网络的IP段、网络架构等。购买ECS产品默认就是专有网络。

  2)  网卡方面

    经典网络绑定公网的ECS(linux系统),系统中网卡是两个, eth0是内网网卡,eth1是公网网卡,如果没有绑定公网,刚经典网络仅有一个内网eth0。

    vpc专有网络,即使绑定了弹性IP的ECS网卡也只有一个eth0,绑定弹性ip的时候,公网数据是通过阿里云内部NAT的方式流转到ECS的eth0网卡上的.

    这里有个很重要的实践:经典网络下,只能在开通ecs的时候选择绑定公网,否则没办法再绑定公网。弹性ip针对VPC网络,灵活性高,随时可以绑定公网弹性IP,不用了随时解绑。

  3)网络实践方面

    经典网络:方便快捷,不需要设置vpc,vSwithc、网络规划等,它是随机内网,开通即用,一般适合部署个人应用站点等

    vpc网络:企业默认的网络架构选择,网段划分,网络隔离。

8.入网请求选型四种方法

  在云端对ECS实现入网请求的功能,可以通过以下4种实现

  1) SLB网络:七层和四层的负载均衡,都能将公网的请求流量引入到EBS中。

  2) 公网ip: 经典网络的公网IP,能直接将公网的请求流量引入到ECS中的eth1网卡上。

  3) 弹性ip:vpc专有网络的弹性ip,能直接将公网的请求流量引入到ECS中的eth0网卡上。

  4) DNAT: 通过端口映射能直接将公网的请求流量映射到ECS的内网端口上。

8.1出网请求选型的三种方法

  1) 公网ip:经典网络的公网IP,通过ECS中的eth1网卡将ECS的出公网请求流量发出。

  2) 弹性EIP:VPC专有网络的弹性EIP,公网的请求流量在云平台内部通过NAT映射出公网。

  3) SNAT:通过路由将公网请求的流量映射到NAT网关,或者一台具有公网访问能力的ECS上,再由这台ECS将公网请求流量转发出云。

9.流量带宽费: 该费用是针对出口流量 ,入口流量不产生费用,这意味着我们上传10GB的文件数据到ECS上是不收费用的,而下载10GB的文件数据则要产生流量费用。如云端1Mbps的配置,只是出口带宽限制1Mbps,不会影响入口带宽限制。

10.阿里云SLB:当前提供四层(TCP协议和UDP协议)和七层(Http和https协议)的负载。四层采用开源的软件LVS(linux virtual Server)+keepalived的方式实现负载。七层采用Tengine实现负载,它是在nginx基础上扩展的,完全兼容nginx的配置。

 11.OSI网络分层及对应的传输协议:

  7)  应用层,传输协议如http\snmp\ftp\telnet

  6)  表示层,传输协议如XDR\SMB

  5)  会话层,传输协议如TLS\SSH

  4) 传输层, 传输协议如TCP\UDP

  3)网络层,传输协议如IP\ICMP

  2)数据链路层,传输协议如以太网、令牌环

  1)  物理层, 如线路路、无线电、光纤

  nginx和HAProxy热门中间件都支持四层和七层负载均衡。最早的LVS是四层,已属于linux的内核。七层的作用是http应用层,所以七层的负载均衡只能跟Tomcat,php,iis等web服务做负载均衡。四层只能获取访问的目标/源ip地址和端口,所以四层的负载均衡,单纯地是将请求轮询转发到后端目标服务器,并不能跟七层一样,做相应逻辑判断(根据域名,URL,浏览器类型 等请求参数转发),然后再转发给符合要求的后端目标服务器,四层的应用场景包括:mysql,LDAP,redis,meecache等四层应用做负载均衡。

   七层负载,在后端服务中,http头的remote_addr虽然代表客户端的ip,但实际值是负载均衡的ip,为了避免这个情况,七层负载通常会增加一个叫作x_forwarded_for的头令牌,把连接它的客户端Ip加到这个头信息里,这样保证了后端获取客户端真实的ip.

  扩展:正向代理是客户端代理,客户端->代理服务器-->internet互联网。 这样internet互联网不知道真实的客户端,比如,无法访问如google,通过代理ip来访问,google并不知道真实的客户端ip。

     反向代理是服务端代理,客户端-->(公网)反向代理服务器(内网)-->web服务器。这样保存了安全,客户端并不知道真实的服务器ip.

12. 负载均衡的性能对比

  Tomcat ------1K并发

  Apache ------3K~5k并发

   IIS       -------0.5w~1w并发

   SLB/Nginx/HAProxy 七层  ------2w~5w并发

   Nginx/HAProxy 四层  ---------- 10w ~50w并发

   LVS/SLB 四层  ------- 50w~100w

   硬件F5/Nctscalcr  ------ 400w~800w

 13 云端存储

  1结构化数据(数据类型,格式,结构的数据)存储到关系型数据库中

  2半结构化数据如json数据文件,xml数据文件

    以上二种类型主要为云RDS,云MongoDB,云Redis等。

  3 非结构化数据,比如文本文档,图片,视频,日志文件等,主要云OSS对象存储用于解决非结构化数据。 

14缓存

  1)静态缓存,一般是指web类应用中,将Html,js,css,图片,音频等静态文件/资源能过磁盘/内存等缓存方式提高资源响应速度,减少服务器压力/资源开销的一项缓存技术。技术主要有squid,varnish,nginx.

    squid是一个代理缓存服务器,它支持ftp,gopher,https,http协议。

    varnish也是一款代理缓存服务器,它支持http代理缓存,相比squid更精简,也性能更好。

    nginx的静态缓存需要第三方模块来完成,如nginx+memcache的组合。

    它们的对比:

      squid:存储在硬盘,性能普通,配置复杂度普通,功能多,效率低.

      varnish:存储在硬盘/内存,性能高,配置复杂度简单,功能少,效率低

      nginx+memcache:存储内存,性能高,配置复杂度需要编程,功能多,效率高

  2)云端静态缓存选型,CDN的静态缓存核心技术就是以上三种方案的体现,只不过CDN将静态缓存的技术产品化,服务化了。

  3)云端动态缓存选型,如meecache,redis,它们都是基于key/value数据库。

15 衡量业务量的指标

  常见web类应用中的pv,uv,ip,用户数,用户活跃数,在线用户数,并发用户数。

  指标pv:计算按天, pv是page view的简写,一般指浏览器业务一天内页面的访问次数,每次打开或刷新一次,就算作一个pv.

  指标uv: 计算按天, uv是unique visitor的简写,一天内访问的用户数。

  指标ip :计算按天,ip是指一天内有多少个独立的ip浏览了页面,即统计不同的ip浏览用户数量。

  用户数: 一般指业务系统注册用户数

  用户活跃数:计算按天,一天中实际使用了业务系统的用户数量,与uv的概念一样。

  在线用户数:计算按天,一天的活跃用户数中,用户同时在一定的时间段内在线的数量。

  并数用户数:指在线用户数基础上,某一时刻同时向服务器发送请求的用户数。

16.性能指标转换计算公式      

  如果一个500万PV的网站,大概要用多少台服务器?

  500万pv即一天24小时中访问了业务页面500万次,如果用5000000/24/60/60 即可得出每秒的页面请求数为每秒57个请求。这个结果和实际情况将会有很大的偏差,因为实际业务访问过程中,比如晚上业务低峰期,基本没多少业务访问量。在实践中可以发现,一天中的80%的业务请求主要发生在40%的时间内,24小时的40%就是9.6小时。

  pv请求量计算模型如下:

  每秒处理请求数量=(80%*总pv量)/(24小时*60分*60秒*40%)

  100w和500w的pv请求量对应的计算结果为:

    (5000000*0.8)/(24*60*60*0.4)=115个请求/秒
    (1000000*0.8)/(24*60*60*0.4)=23个请求/秒

  即服务器一秒能处理23个请求,就可以每天承受100w的pv业务量。能处理115个请求,就可以每天承受500w的pv业务量

   其次真实的业务场景下,有低谷也有高峰,主要考虑高峰值,假如一天中高峰期的请求量是平时请求的两倍或三倍,示例如下:

    23*2=46个请求/秒

    23*3=69个请求/秒

    115*2=231个请求/秒

       115*3=347个请求/秒

   如果一台服务器一秒内能处理46~69个请求,那么就能应对100w的pv请求量

   如果一台服务器一秒内能处理231~347个请求,那么就能应对500w的pv请求量

17.pv量对应的服务器配置

  1w的pv:服务器配置1核/1G/1台

  10w的pv:服务器配置2核/4G/1台

  50w的pv:服务器配置4核/8G/1台

  100w的pv:服务器配置8核/16G/1台  

   500w的pv:服务器配置8核/16G/10台

18. 服务器CPU/内存配置模型

  在互联网企业的服务器CPU利用率平均在10%~20%, 磁盘空间的利用率在20%~30%。在云端,有80%企业存在计算资源和存储资源闲置浪费的现象。

  实践中最为常见的服务器配置即CPU与内存资源配比一般都是1:1, 1:2, 1:4,1:8。

  1) Cpu与内存资源配比1:1

    适用于个人网站,官网等小型网站部署,一般在低配机器中,如1核1GB,2核2GB。
  2) Cpu与内存资源配比1:2

    这种配比可以获得最优计算资源性价比,1:2均为黄金比例,如1核2GB,2核4GB等。这种配比适合绝大部分业务场景部署,龙其是需要消耗资源的计算。

    1:2的配置,特别适合web服务类/应用类,4核8GB偏向中小型web服务/应用类部署,8核16GB偏向大型web服务/应用类部署。

    对于nginx,2核4GB或4核8GB配置足够了。

  3)CPU与内存资源配比1:4

    比如2核8GB,4核16GB等,这类配置偏向内存,特别适合部署数据库类的应用。8核32GB是保障数据库具有良好性能的经典配置。

  4)CPU与内存资源配比1:8

    比如2核16GB,4核32GB等,这类是高内存资源占比,龙其适用于内存数据库,如redis,memcache的部署。

19. 云端带宽配置选型

  1Mbps=1,000,000 bit/s (1百万bit)
  1Byte=8bit
  1Mbps=125000 Byte/s
  1Mbps=128 kb/s
  1Mbps=0.119 MB/s

  1Gbps=128MB/s

  当我们查看连网的传输时,显示1.0Gbps,如下图所示,一般20%为下载速度(128MB/s*0.2=25.6MB/s),百分之八十为上传速度(128MB/s*0.8=102.4MB/s)。

 

 

  如果需求只是入口流量,带宽一般采用SLB,  带宽性能,架构扩展,安全性都比ECS直接绑定公网带宽要好。此用户业务,主要采用SLB,所以如果只是入口流量需求,没必要给后端配置高配的固定带宽。

  如果需求是出口流量,需要主动去访问公网服务,这里采用SNAT的方式,更不需要给每台服务器绑定高配的固定带宽。

  即使开了50Mbps的带宽,默认也要选择按使用流量的带宽类型。

  带宽计算模型:带宽配置=每秒请求数量*每次请求传输的数据量

         带宽配置=(80%*总pv量)/(24小时*60分*60秒*40%)*  X Mbps/s

  经实践发现,在web类的应用中,80%的带宽会被静态资源传输占用,如果采用CDN,能够有效减少后端服务器的带宽配置。假设每个请求页面平均传输数据是20KB(不包括图片等静态资源),则100w的pv,要选择的带宽配置如下:

  100w的pv的带宽配置(平时访问量)=(80%*100w)/(24小时*60分*60秒*40%)* 20kb/s=23.1个请求/秒*20kb/s=462kb/s=3696bps/s,即3.5Mbps。

  100w的pv的带宽配置(峰值的2倍)=(80%*100w)/(24小时*60分*60秒*40%)*2* 20kb/s=46.2个请求/秒*20kb/s=924kb/s=7392bps/s,即7Mbps。   

20.带宽类型选择的8/2原则

  在云端配置实践中,在关于SLB,ECS,EIP的带宽类型选择上,很多人选择固定带宽,比如1Mbps、5Mbps,10Mbps等,事实上,大多数情况下是没有必要的,在云端带宽配置的选择中:

  80%的应用默认选择按量带宽,即按量带宽是云端带宽类型选择的最佳实践。

  20%的应用选择固定带宽,这个特定的条件就是,每天按量下载的合计费用超过带宽平均每天费用,则使用固定带宽。   

   实践案例1:固定带宽与按量带宽费用对比

     按量带宽配置: 1核/1G/0Mbps    费用为36.8元/月。  带宽收费按实际的出口流量计算。

     固定带宽配置: 1核/1G/5Mbps  费用为161.8元/月。

     如果:每月固定带宽5Mbps :161.8-36.8=125元/月。125/30=4.2元/天。 4.2/0.8元/G=5.25G

     通过计算可知,若使用固定带宽5Mbps,每天业务产生的流量超过5.25GB,那么这时候使用固定带宽才划算。当每天业务低于5.25GB的时候,优先使用按量付费。

          我们发现往往80%的情况都是每天业务产生的实际流量是低于固定带宽的成本的。

    如果是数据传输(如异地备份),每天产生的大流量导致的,这时候才采用固定带宽。

    如果是商城之类的公开网页,也要考虑爬取导致的出口流量升高,采用固定带宽。云上的5Gbps的免费防御DDos攻击流量。

    有些客户担心DDOS攻击会产生额外的流量费用,其实不用担心,DDOS攻击产生的瞬时几十字节的流量都是入口流量,是不收费的,唯一可能产生费用的就是cc攻击,其类似于刷网页,这会导致出口流量增加,产生额外的流量费用。

  应用场景:

    1)流量稳定选择固定带宽更划算,流量平时很少偶发流量高峰选择按流量计费更便宜

    2)24小时长期稳定提供服务的Web网站应用,一般选择按固定带宽计费。

    

posted on 2022-06-21 19:26  花阴偷移  阅读(306)  评论(0编辑  收藏  举报

导航