云计算的概况
国内外多个大厂都提供了自己的云计算平台,包括亚马逊的AWS,微软的Azure,Google的GCP(Google Cloud Platform),国内的有腾讯云,阿里云,华为云等。对于国际大公司来说,要想给全球用户一个良好的产品使用体验(低延迟),必然要在全球主要节点部署机房,构建数据中心。对于小公司来说,没有这个财力进行全球部署,大公司从中看到了商机,既然小公司有这个需求、自身也为此维持了相当的人力成本,那为何不多部署一些,分隔成可精确计费的服务(IaaS,PaaS,FaaS),然后售卖给小公司呢?AWS等云计算平台可以做到按请求次数、计算资源使用时间(100毫秒)来计费。
这样一来,云计算平台上面既运行着自家的产品,也对外提供计算、存储、网络、机器学习、大数据分析处理等各种能力与服务。打开手机QQ,初始界面下方有一行字“腾讯云提供计算服务”。从2017年开始,腾讯要求内部服务都逐渐迁移到腾讯云上面,迁移的过程总是缓慢的,但是一旦上云上就再也不想回去了。在以前,升级一个公众号消息发送服务(有100多台8核8GB内存机器)需要花费小半天:先将待升级的机器上面的流量切走,开始升级,升级完之后观察没有问题后再接入流量,为避免将剩余的机器压爆,每次升级的时候最多升总量的10%~15%。这样来回切,费时费力。以容器和K8S为代表的先进技术出现后,服务的扩容、缩容、升级基本不再花费开发的额外精力。
云计算平台的全球市场占有份额分布如下(Canalys 2020年5月统计数据):AWS(32%)、微软Azure(17%)、谷歌云(6%)、阿里云(6%),剩下的是一些其他云计算平台,包括IBM、Oracle、华为云、腾讯云等。国内市场占用份额分布如下(Canalys 2020年 Q1数据):阿里云 44.5%、华为云 14.1%、腾讯云 13.9%、百度云 8.6%。
计算、存储、网络是云计算平台提供的三个最基本的服务,称之为基础架构(IaaS),就像一个城市的水、电、公共交通,当从自建的数据中心迁移上云,首先想到的就是这些基础设施。但是光有这些还是不够,优秀的云提供商,还会提供各种PaaS、FaaS服务,例如,客户只负责选择需要的计算节点个数,剩下的由云计算平台负责搭建和维护K8S集群。更进一步,客户只需要写事件触发函数(Function),完全不用关心后面需要多少计算资源,如何做负载均衡,如何配置网络拓扑等。
机房选址、硬件服务器资源购买、网络设置、多机房异地容灾、全球负载均衡、边缘计算节点部署、防止网络攻击(例如DDoS),对小公司、初创公司或者个人开发者,几乎是不可能完成的事情,对大公司来说,这些都已经做过一遍了,是现成的。有买方,有卖方,生意就这样做起来了。
NIST对云计算(Cloud Computing)的定义
-
按需自助服务:只需使用一个简单的界面,就可以获得所需的计算能力、存储和网络,而无需人工干预。
-
广泛的网络接入:可以从任何想要的地方通过网络访问这些资源。
-
资源池:这些资源的提供者拥有一个很大的资源池,并将其分配给该资源池之外的客户。通过批量购买获得规模经济,并将节省下来的钱转嫁给使用者,资源使用者不必知道或关心这些资源的确切物理位置。
-
资源可快速伸缩:可以快速的进行资源的扩容和缩容。
-
服务可度量:只为使用的服务计费,停止服务则停止计费。
接下来从以下几方面介绍一下Google的GCP:
-
IAM(Identity And Access Management)与资源管理
-
网络
-
计算
-
存储与数据库
-
App Engine、GKE与Cloud Function
-
Stackdriver
-
数据处理、大数据分析与机器学习
IAM与资源管理
Google Cloud 资源层次结构与传统操作系统中的文件系统类似,能够以分层方式组织和管理实体。每项资源有且仅有一个父项。通过这种分层化的资源组织方式,可以对父资源设置访问权限控制政策与配置设置,并且子资源可以继承这些政策与 Identity and Access Management (IAM) 设置,子节点策略不能限制已经在父层节点授予的访问权限:
-
Organization: Organization是顶层节点,没有父节点,代表整个组织,管理者多个部门Folder,包含所有计费账号。
-
Folders: Folder管理者Project,为了管理方便,会有多个层级的Folders,例如,一个产品Folder管理者多个Project,一个团队Folder管理者多个产品Folder。一个部分Folder管理者多个团队Folder。
-
Project: 管理Resource中资源,包括资源的访问与授权、配额管理、计费等,一个Project关联一个计费账号,每个Project可以创建最多5个VPC(Virtual Private Cloud)网络。通过配额管理,可以防止因错误或者恶意攻击导致的资源滥用和费用突增,可以强制进行资源控制和周期review。
-
Resource: 包括计算、网络、存储、App Engine、GKE等资源,一个资源只能属于一个且只能是一个Project。根据作用范围不同,分为Global、Regional、Zonal,如下图所示:
Organization、Folder、Project、Resource关系图:
三种类型的IAM Roles:
-
Primitive: IAM Primitive Roles适用于一个Project中所有的GCP服务,提供了固定的、粗粒度的访问控制,包括Owner、Editor、Viewer和Billing Administrator,Owner有Editor的所有权限,Editor有Viewer的所有权限,Billing Administrator有管理账单和增删管理者的权限,具体如下图所示:
-
Predefined:IAM Predefined Roles适用于一个Project中具体的某一个GCP服务,针对具体服务提供了较细粒度的许可控制,比如InstanceAdminRole包括的compute.instance.start, compute.instance.stop, compute.instance.list等许可。
-
Custom: IAM Custom Roles可以按照要求定义一组许可列表。
<