Advertisement

谷歌云计算平台GCP介绍

阅读量:

云计算的概况

国内及国际各大企业均推出了自己的云计算平台,包括:亚马逊AWS、微软Azure、谷歌GCP、以及腾讯云、阿里云、华为云等。对于国际大公司来说,确保产品对全球用户拥有良好的使用体验(即低延迟),必然需要在全球主要节点部署机房并建立数据中心。对于小公司来说,由于缺乏 funds 进行全球部署,大公司从中看到了商机。既然小公司有这个需求,且自身也承担了相应的运营成本,为何不建立几个区域性的数据中心,将这些服务分隔成可精确计费的形式(如IaaS、PaaS、FaaS),然后以更灵活的方式出售给小公司呢?AWS等云计算平台能够根据请求数量、计算资源的使用时长(以100毫秒为单位)进行计费。

出乎意料地比传统的[性能]表现更出色,我想主要得益于其简单的设计和简洁的代码。

这样一项创新技术使得云计算平台不仅运行自家产品,还提供计算、存储、网络、机器学习和大数据分析等服务。

打开QQ客户端,初始界面下方显示“腾讯云提供计算服务”。

从2017年起,腾讯内部服务逐步迁移至腾讯云,迁移过程较为缓慢,但一旦上云便再无回转。

在之前的系统升级中,升级一个公众号消息发送服务(配置了100多台8核8GB内存机器)需要耗费半天时间。

借助容器化技术和K8S,服务的扩容、缩容和升级操作已无需额外开发资源,极大地提升了运维效率。

全球云计算平台市场占有率分布情况如下(依据Canalys 2020年5月数据):AWS占据32%,微软Azure占17%,谷歌云和阿里云各占6%。其余市场则由包括IBM、Oracle、华为云、腾讯云等其他云计算平台分享。中国国内市场云计算市场占有率分布显示(参考Canalys 2020年第一季度数据):阿里云占据44.5%,华为云占14.1%,腾讯云占13.9%,百度云占8.6%。

云计算平台为用户提供的是计算、存储、网络等基础服务,统称为IaaS(即服务),类似于城市里的水、电、公共交通系统。当企业从自有数据中心迁移至云计算平台时,首先要考虑的就是这些基础设施。然而,仅有这些基础设施是不够的,优秀的云计算服务提供商还会额外提供PaaS(平台即服务)和FaaS(功能即服务)等其他功能,例如,用户只需指定需要的计算节点数量,而平台会自动进行集群构建和维护。进一步地,用户只需编写事件触发函数(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代表整个组织体系,负责管理多个部门。文件夹,包含所有费用相关的账户信息。

文件夹:文件夹管理者。为了管理的便利,会设置多个层级的文件夹结构。例如,一个产品文件夹下会有多个项目文件夹,一个团队文件夹下包含多个产品文件夹。一个部分文件夹管理多个团队文件夹。

该系统旨在对Resource进行管理,涵盖资源的访问权限和授权管理、配额控制以及费用计算等功能。每个Project与一个计费账号绑定,最多可配置5个VPC网络。通过配额管理机制,可以有效防止因错误操作或恶意攻击导致的资源过度使用和费用急剧增加,从而确保资源的合理利用和费用的可控性。

Resource:涵盖计算、网络、存储、App Engine、GKE等类型,每个资源仅限于一个Project。根据作用范围,分为Global、Regional、Zonal三种类型,如图所示:

Organization、Folder、Project、Resource关系图:

三种类型的IAM Roles:

基础:IAM基础角色为所有GCP服务提供了基于角色的访问控制机制,采用细粒度的权限划分。具体包括Owner、Editor、Viewer和Billing Administrator四个角色。其中,Owner角色拥有Editor角色的所有权限,Editor角色拥有Viewer角色的所有权限,而Billing Administrator角色则具备管理账单和增删管理者的权限。具体架构如下图所示。

Predefined IAM Predefined Roles在某个GCP服务中的具体项目中,为特定服务提供了精细的权限控制。例如,InstanceAdminRole涵盖了启动、停止实例以及列出实例等权限。

Custom: IAM Custom Roles可以按照要求定义一组许可列表。

服务账户

服务账户标识用于服务间交互,是一个用于身份识别的地址,例如123845678986-compute@project.gserviceaccount.com,具体包括三种类型的服务账户:

自定义服务账户,包括Predefined Roles。

Compute Engine和App Engine各自都拥有各自的default service accounts,这些账户涵盖IAM Primitive和Predefined Roles。

Google API 服务账户,代表调用方运行内部Google进程。

它有如下2个好处:

运行在Compute Engine实例中的程序能够自动获得有效的Access Token。

Token允许访问项目中的所有服务API以及为该服务账户授权的任意服务。

可以通过如下两种方式管理服务账号认证所需的Key:

GCP-managed: 不可以下载,可以自动轮换。

User-managed:自行创建、管理、轮换。

网络

在GCP体系中,VPC扮演着关键角色。通过这一机制,可以有效地将不同用户或虚拟机进行隔离。作为一个全球范围内的网络架构,VPC整合了多个关键组件,其核心组成部分包括网络接口、安全组、防火墙规则以及虚拟网络。这些要素共同构成了一个安全且可扩展的云网络环境。

Virtual machines(VMS): 在物理机器上,通过虚拟机技术(VMM/Hypervisor)实现多VM的虚拟化,从而提高资源利用率。云计算中的Compute Instance是以虚拟机作为基本单位。

Zone: Zone可以理解成机房,但是和机房不是一一对应的。

每个VPC至少包含一个Region,每个Region至少包含两个Zone。每个Region与相邻的Region保持至少160公里的距离,并通过专用专线连接,以确保网络延迟的最小化。在多个Region中部署相同的业务,当一个Region出现故障时,其他Region仍能正常运行,从而提升了整体系统的容灾能力。Region内部采用TCP/UDP协议实现负载均衡,而不同Region之间则通过HTTP/HTTPS协议进行负载均衡,确保了业务的高效扩展。这种配置不仅支持全球业务的发展,而且只需对外提供一个IP地址即可,极大简化了网络架构。

Subnetwork:支持跨多个Zone部署,所有同属一个Subnetwork的业务均共享同一Firewall规则。在同属一个Subnetwork的多个Zone中部署相同业务,单个Zone失效时,其他Zone仍可正常运行,便于实施容灾备份策略。通过配置合适的Tag,可以方便地实现对Firewall流量的控制。

该网络包含默认、自动和自定义三种配置模式,支持全球范围内的部署,可跨越多个地理区域,并包含多个子网络。该网络无需指定IP地址范围,所有VM即使分布在不同区域,仍可通过内网访问;若位于不同网络,即使在同一区域,也需通过外网连接。在同一个网络内的VM,即使分布在不同的地理区域,仍可通过内网实现访问;而位于不同网络中的VM,即使在同一区域,也需通过外网连接才能实现访问。

本项目中,需要建立可计费的对象与服务的关联,最多支持5个Network,这些Network可以是共享的或互连的。

IP地址分为内部IP地址和外部IP地址。虚拟机(VM)可以拥有内部和外部两个IP地址。内部IP地址由Subnetwork的地址范围通过DHCP动态分配,且该分配范围由Subnetwork确定。DHCP的租赁周期为每日24小时。外部IP地址可从IP地址池分配(临时使用)或保留固定IP地址(静态配置)。外部IP地址可映射到对应的内部IP地址,而VM并不知道外部IP地址的存在。

Routes: 路由。

Firewall rules: Inbound/Outbound Firewall rules, 可基于IP和tag。

VPC的分类:

Shared VPC,所有服务和网络元素集中在一个VPC内,实现集中管理,不能在组织间跨越。

VPC peering技术允许两个组织或实体分别位于两个VPC中,相互设置彼此为peers,通过private IP地址实现访问,采用去中心化的管理方式。

为防止业务计算实例遭受外界攻击,GCP包含一系列安全措施,如检测恶意流量攻击DDoS、部署防火墙、配置API Gateway、采用NAT等防护策略。基于NAT机制,内网设备可访问外网资源,而外网设备无法访问内网设备。

负载均衡

GCP提供了如下几种负载均衡方式:

HTTP(s) load balancing, 全局负载均衡,自动扩缩容,URL映射,架构如下:

SSL代理负载均衡系统为非HTTP流量的加密传输提供全局负载均衡策略,实现智能流量转发,同时支持身份认证管理模块和安全更新机制,确保SSL策略配置的稳定性和安全性。

TCP代理负载均衡技术,为非HTTPS的非HTTP流量提供全局负载均衡策略,支持智能负载分配,并保证安全更新。

网络负载均衡,地理区域范围内的非代理服务器负载均衡,支持UDP、以及SSL/TLS流量。

内部负载均衡,区域私有负载均衡,支持UDP和TCP流量,支持三层Web服务架构。

汇总如下:

计算

多种机型:

网络容量每vCPU 扩缩 2Gbps

理论上最多32Gbps(16个vCPU)或者100Gbps(T4或者V100 GPU),1 vCPU = 1个硬件超线程

Compute Engine:

Computer Engine支持可管理的虚拟机,这种资源是人们向云迁移时首先想到的解决方案,即IaaS。

该产品支持Linux和两种主流的操作系统,其虚拟化解决方案基于KVM的虚拟化技术。

预设配置或根据需求进行选择合适的内存大小、CPU核数和硬盘类型(建议采用SSD存储方案,其中本地SSD是推荐选项)。若有实际需求,可配置GPU加速。

按秒计费的计算资源在横向扩展时,可创建多个虚拟机实例;而纵向扩展时,可选择具有大内存的虚拟机实例,增加更多CPU核数,以及增加更大磁盘空间的虚拟机实例。

预定义机型按照1 vCPU对应的内存大小可分为:

标准

高内存

高CPU

内存优化

计算优化

共享Core

托管的计算实例组,极大减少了运维成本:

根据实例模板可以部署完全一样的计算实例。

确保所有计算实例都是正常运行的。

计算实例支持在同一Zone或跨Zone运行,但必须遵守同一Region的限制。

实例组具备自动扩缩容能力,根据负载的变化自动调整计算资源数量,扩缩容策略包含CPU使用率、负载均衡容量、预设或用户自定义的监控指标以及基于队列的负载信息。

计算实例的虚拟化镜像(Image)在虚拟化管理器(VMM/Hypervisor)上安装,具体包括硬件加速、内存管理、存储配置等技术细节。

加载引导程序(Boot loader)

操作系统(Guest)

文件系统

自定义软件

镜像可以通过如下方式获取:

公共基础镜像,包括Google、第三方品牌商及社区,具体划分为Linux(包括CentOS、CoreOS、Debian、RHEL系列、SUSE系列、Ubuntu、openSUSE、FreeBSD)和Windows(包括Windows Server 2019、2016、2012-R2系列)

定制镜像可通过现有计算资源构建,支持从自建机房和工作站导入,同时支持从其他云提供商导入的镜像。

存储与数据库

GCP提供了多种类型的硬盘:

持久化的标准硬盘、SSD硬盘,这些存储不会随着虚拟机的删除而消失。

Local SSD,速度更快,当虚拟机删除的时候会同时删除。

GCP也提供了多种数据库(关系型和非关系型):

Cloud Storage

Cloud Bigtable

Cloud Datastore

Cloud Firestore

Cloud SQL

Cloud Spanner

Cloud Memorystore

Cloud Storage

Cloud Storage是一种对象存储服务,具有高性能和自动扩展功能,用户无需自行管理存储容量。具体操作中,创建一个Bucket后,将图片等文件上传至指定的Bucket位置。根据具体需求,可以选择Multi-regional、Regional、Nearline或Coldline存储类型。其中,前两种存储类型单价为GB/月,整体成本较高;后两种存储类型单价较低,但单个GB的访问成本较高。

可以用客户自己提供的加密key(CSEK)。

对象生命周期管理,自动删除或者归档对象。

通过对象版本管理功能,可以为一个对象创建多个版本,支持查询已删除或已覆盖的版本对象。

在对象进行更新或新增操作时,将触发相关通知应用程序。

强一致性,提供全局的强一致性。

Cloud Bigtable

托管的NoSQL大数据服务基于云平台,适用于广告技术(Ad Tech)、金融技术(Fintech)以及物联网(IoT)等相关领域。该存储引擎支持机器学习等应用,能够支持在同一行(row)内的事务处理,但不支持跨行事务。此外,该存储引擎能够方便地与开源的大数据平台无缝对接。

PB级数据扩展

低于10毫秒的延迟

平滑的扩缩容能力

学习和自动调整访问方式

Cloud Bigtable的存储模式:

处理与存储是分开进行的,可以通过增加Bigtable node节点,方便地提高处理能力。同时,node节点故障不会导致数据丢失。

能够自己学习和调整访问方式

吞吐量可以随着Bigtable node节点数量线性扩缩

Cloud Datastore

托管的NoSQL存储服务基于Bigtable架构构建,并经过优化和提升。例如,Bigtable仅支持单个row的事务,而Datastore最多支持25个row的事务。该存储服务提供基于SQL的查询功能,通过索引快速定位符合条件的Object,可作为应用程序的后端存储。

Cloud Firestore

Cloud Firest标志着Cloud Datastore的下一代产品发布,采用文档存储架构,专为存储和管理大量复杂、结构不规则的数据而设计。该产品通过自动扩展和收缩机制,展现出卓越的性能,同时具备友好的开发界面,简化了应用的构建过程。与传统关系型数据库相比,Cloud Firest采用NoSQL架构,数据对象之间的关联方式更加灵活和开放。支持在文档存储层面上执行复杂的一致性事务(ACID),为数据结构的灵活设计提供了便利。该系统内置实时同步和离线模式,支持在移动Web和IoT设备上构建多用户协作式应用,例如实时资产跟踪、活动跟踪、实时分析、媒体和商品清单、通信、社交媒体用户资料和游戏排行榜等。提供两种工作模式:实时同步模式下,所有操作均在云端进行;离线模式下,数据可以在本地进行处理和分析。实时同步模式适用于需要实时数据访问的应用场景,而离线模式则适合对延迟容忍较高的场景。

Datastore模式,与Datastore应用兼容,强一致性。

Native模式,文档数据模式,支持实时更新。

Cloud SQL

该解决方案是基于云数据库的Mysql和PostgreSQL数据库,提供高可靠性与高扩展性。每个虚拟机(VM)都配备有高达30TB的存储容量、40,000 IOPS的处理能力以及416 GB的内存配置,自动处理备份、复制和更新等任务。该解决方案通过Compute Engine实现故障恢复,确保高可用性。写操作仅支持纵向扩展,读操作则支持纵向和横向扩展。

Cloud Spanner

Cloud Spanner是一种基于云服务的托管关系型数据库,支持自动备份、复制和数据更新功能,集关系型数据库结构的优势与非关系型数据库扩展能力于一身。

PB级数据的扩展

强一致性

高度可靠,主要应用于金融和库存相关的行业,月可用率和多地区可用率分别为99.999%和99.99%。

Cloud Spanner的架构设计采用了在多个可用区部署副本的策略,以防止单一可用区故障导致的数据丢失。

通过Google的全局光纤网络在多个Zone之间同步数据的更新

Cloud Memorystore

Cloud Memorystore是托管的Redis服务。

全内存的数据存储服务。

高可靠,故障自动恢复、监控。

小于1毫秒的访问延迟。

最多可达300GB的容量。

网络带宽可达12Gpbs。

App Engine、GKE与Cloud Function

App Engine

托管服务使得客户无需关注底层基础设施管理(涵盖计算资源、存储空间、网络配置等),只需专注于具体业务逻辑实现,App Engine会自动优化资源分配,并在代码运行时实施付费策略。该服务分为两种类型:标准配置和灵活配置。标准配置仅支持Java、Python、PHP和Go语言,禁止使用本地文件,且所有请求的最大响应时间限制为60秒。

GKE(Google Kubernetes Engine)

从零开始搭建一个K8S集群,确实需要投入大量时间和精力。搭建一个K8S集群从基础开始,需要完成一系列任务,过程相当复杂。搭建K8S集群需要从零开始,完成一系列任务,确实需要投入大量时间和精力。

在Master、Node节点安装、配置Docker。

修改docker cgroup驱动,与k8s一致,使用systemd。

在Master、Node节点安装kubelet kubeadm kubectl。

集群创建准备工作,首先在Master节点和Node端拉取相关镜像,其次修改镜像tag,最后删除旧镜像。

通过kubeadm部署集群,配置相应的权限设置,启用flannel网络,将多个节点加入集群。

安装dashboard,设置监控、告警。

利用Google Kubernetes Engine(GKE),用户只需指定所需的Node数量,集群的管理包括自动处理告警和监控等任务,从而显著提升了整体的工作效率。

容器(Container)

通过Compute Engine当然可以进行自动扩容,但虚拟机中的 guest operating system占用较大空间,导致启动和停止虚拟机耗时较长,无法随意扩缩容以满足资源需求。相反,为了充分利用资源,必须能够方便快捷地进行业务资源的扩容和缩容,这是云计算平台必须具备的(参考云计算平台的定义),而容器技术正是在这种背景下迅速发展并被应用到云计算平台中。容器没有 guest OS,只镜像了业务和所依赖的环境和库,因此额外开销很小,启动和停止都非常快速。一个应用可以拆分成多个逻辑,每个逻辑就是一个微服务,运行在可扩展的容器中,这些容器运行在多个host中。每个host可以运行多少个容器,如果host故障,其中的container如何迁移等,kubernetes就是用来解决这些问题的。kubernetes使得在多个host上协调多个容器、将其扩展为微服务以及部署发布和回滚变得非常容易。文中还提到,部署kubernetes集群本质上是一个体力活,这时候google的kubernetes engine出现了,客户只需要用几个node来承载应用的container,其余的都不用关心。深入分析的话,container和kubernetes介于iaaS和paaS之间。

容器只包含应用程序和其依赖的库,比虚拟机要轻量很多

Kubernetes架构体系,通过master节点管理多个node节点,并对外提供管理接口,实际业务应用(多个Pod)运行在node节点上。

Kubernetes架构体系,通过master节点管理多个node节点,并对外提供管理接口,实际业务应用(多个Pod)运行在node节点上。

在Kubernetes系统中,最小的调度单元被定义为pod。单个pod通常可以包含多个container。这些container在同一个pod中共享一个网络接口。

GKE显著提升了生产力水平,通过一个简单的命令,即可轻松搭建一个Kubernetes集群。

Cloud Function

通过可扩展的函数即服务 (FaaS) 按需付费模式,企业无需承担服务器维护工作。

不必预配、管理或升级服务器

根据负载自动扩缩

集成式监控、日志记录和调试功能

基于最小权限原则的角色和函数级别的内置安全性

适用于混合云和多云端方案的关键网络功能。

简化开发者体验,提高开发速度。

Stackdriver

集成monitoring、logging、diagnostics

跨平台管理,包括GCP和AWS

强大的数据和分析工具

和第三方软件的合作

logging

可以搜集平台、系统、应用程序日志,最多保留30天,提供API来写日志。

可搜索、查看、过滤日志。

基于日志的metics。

可基于日志事件来设置告警。

日志可以被导入到Cloud Storage,BigQuery and Cloud Pub/Sub。

**

**

Monitoring

动态设置和智能常规默认值

摄取平台、系统、应用程序metics,事件,元数据,生成dashboards、表格、告警。

Uptime/Health check

Tracing

跟踪系统,近实时的展现数据,请求latency报告,URL latency采样。

本研究涉及了延迟数据采集,涵盖App Engine、Google Http(s)负载均衡器以及通过Stackdriver Trace SDKs收集的应用程序相关信息。

Error Reporting

聚合和展现运行的云服务的错误

错误通知

错误dashboard

数据处理、大数据分析与机器学习

BigQuery

BigQuery作为GCP提供的无服务器的、高度可扩展的低成本云数据仓库。

完全托管

PB级数据扩展

提供SQL接口

非常快

Cloud Dataflow

Cloud Dataflow是一种云平台提供的数据处理管道,支持自动扩展的集群规模,并采用基于数据转换的编程模式。BigQuery数据源通过Dataflow处理后,最终存储在Cloud Storage中。其主要应用场景包括:首先,作为数据转移、筛选、丰富加强和规整数据的管道,支持ETL(extract/transform/load)流程;其次,用于数据分析,涵盖批量计算和流连续计算。

Cloud Dataprep

Cloud Dataprep可可视化的挖掘、清洗、准备数据,用于分析和机器学习。

serverless,可任意扩展。

理想的数据转换服务。

聚焦于数据分析。

Cloud Dataproc

Cloud Dataproc是运行Apache Spark和Apache Hadoop集群的服务。

低成本(可抢占)

可快速的进行启动、扩缩、关闭

托管的服务

Pub/Sub

灵活可靠的消息传输系统,支持双向异步消息订阅机制,提供push和pull两种消息订阅模式,与数据流处理框架和物联网设备协同运行。其功能类似于Kafka,但作为完全托管式服务,无需担心扩展和维护问题。

机器学习

开源工具构建和运行神经网络模型,支持CPU、GPU,移动端、服务、云等。

全程托管的机器学习服务,采用Notebook开发环境,并与BigQuery、Cloud Storage深度集成。

谷歌推出的预训练机器学习模型,涵盖:从语音到文本,支持80多种语言的实时识别;视觉计算,包括物体识别、边界框标注、文本识别及内容分析;自然语言处理,涵盖语言识别与机器翻译功能;以及结构化数据的解析与语义理解。

总结

依稀记得有一位大佬说过,云计算不过是“旧瓶装新酒”,没有带来任何实质性的技术创新或商业模式的革新。仔细拆分来看,云计算确实没有带来任何新的技术,但其代表了一种全新的商业模式的转换,无需提前规划购买资源、只为使用的资源付费、可快速扩缩容,其显著的优势在于能够灵活调整资源规模,以满足不同的业务需求。

jameswhale的技术人生

jameswhale的技术人生

jameswhale的技术人生

jameswhale的技术人生

文章首次发布于个人公众号【jameswhale的技术人生

全部评论 (0)

还没有任何评论哟~