
之前帮几个做跨境业务的开发者梳理部署方案,不少人只听过谷歌云,对它的核心能力和适用场景说不清楚,甚至有人把它和普通的对象存储服务混为一谈。其实对普通开发者来说,不用去记太复杂的厂商背景,只要理清它的基础服务逻辑和适用场景,就能判断是不是符合自己的需求。
基础概念梳理
谷歌云是谷歌推出的全套公有云服务,覆盖从基础设施层到平台层的各类服务,满足从个人开发到企业业务的不同部署需求。简单来说,它的服务可以大致分成两类,一类是基础设施即服务,也就是常说的IaaS,给用户提供可自定义配置的计算实例、存储资源、网络资源,用户可以完全控制操作系统和运行环境,自己安装需要的软件和服务。另一类是平台即服务,也就是PaaS,这类服务已经把底层的基础设施和运行环境配置好,用户只需要上传自己的业务代码或者静态资源,就能直接对外提供服务,不用花精力维护底层硬件和系统。对普通开发者来说,不需要去记所有冷门的服务类型,只要理清常用的计算、存储、网络三类基础服务的逻辑,就能满足大部分日常开发部署的需求。
不少初次接触谷歌云的开发者,容易搞混区域和可用区的概念,这一点其实是比较关键的。谷歌云把全球的基础设施划分成多个独立的区域,每个区域对应一个地理上的位置,每个区域下面又设置了多个物理隔离的可用区。同一个区域内的不同可用区,距离比较近,网络延迟低,但电力和网络都是互相独立的,一个可用区出现硬件故障或者线路问题,不会影响同一个区域内的其他可用区。做高可用架构的时候,把业务实例分布在同一个区域的不同可用区,就能避免单点故障导致整个服务不可用,这个逻辑和多数公有云的设计是一致的,只是具体的区域分布和命名规则有区别。
另外,谷歌云的内部跨区域连通走的是谷歌自己的全球骨干网络,从实际使用的情况看,跨区域实例之间的内部通信,链路波动比公网环境要少,这对于需要跨区域部署多实例的业务来说,是一个比较重要的特性。这里就不多展开,只要知道这个基础逻辑就可以。
常见的使用场景
对普通开发者来说,谷歌云比较常用的场景主要有几个,我接触下来,大多数用户都是这几类需求。
第一个是面向全球用户的业务部署。如果你的产品用户分布在多个不同的地区,把服务部署在离用户近的谷歌云节点,可以降低访问延迟,对用户使用体验的提升有帮助。比如你的主要用户在欧洲,就可以选择欧洲区域的实例,减少中间链路的不稳定因素。这类场景下,只要选对区域,后续的维护工作量会少很多。
第二个是静态资源托管。很多开发者做网站或者APP,会把静态的图片、安装包、网页前端文件放在对象存储里,谷歌云的对象存储服务可以直接配合自定义域名使用,不用额外绑定计算实例,配置也比较简单。很多个人开发者会用它来搭静态博客,或者放开源项目的安装包,这类轻量需求用起来比较顺手。
第三个是临时开发测试环境搭建。做项目开发的时候,经常需要临时开几个实例做兼容性测试或者压力测试,测试完成之后就不需要了。在谷歌云上可以快速创建符合配置要求的实例,测试完成之后直接释放,不用自己准备闲置的物理硬件,对小团队或者个人开发者来说比较方便。
第四个是冷数据容灾备份。不少开发者和小团队会把重要的冷数据,比如项目的历史归档、用户数据的备份,存在谷歌云的归档存储服务里,这类存储适合不经常访问但需要长期保存的数据,只要做好权限配置,可靠性比较高,适合做异地容灾的备份节点。
容易忽略的几个问题
我接触过不少初次使用谷歌云的开发者,踩过一些不算大但排查起来很麻烦的坑,这里整理几个比较常见的,给大家做参考。
第一个是区域选择的问题。不少初次使用的新手,不知道区域对访问体验的影响,会随便选默认分配的区域,结果自己的主要用户离这个区域很远,导致访问延迟很高,出现卡顿的时候半天找不到原因。还有人做高可用,把所有实例都放在同一个可用区,这个可用区出故障的时候,整个服务就断了,这些都是一开始不注意概念导致的问题。其实只要在创建资源之前,先确认自己的用户主要分布在哪里,选对应的区域,再把核心实例分到不同可用区,就能避免大部分这类问题。
第二个是防火墙和权限配置的问题。谷歌云的计算实例默认只开放了远程管理用的端口,其他端口都默认禁止外部访问,很多新手搭完web服务,发现外部网络连通性异常,排查了半天系统内部的配置,结果忘了去谷歌云的控制台添加上对应的防火墙放行规则。还有一种错误虽然低级,但新手确实常会碰到:把面向外部用户的服务不小心绑到了谷歌云的内部IP上,外部自然无法正常访问。
权限方面的问题也很多,很多新手创建存储桶的时候,要么就是没改默认权限,导致敏感数据可以被所有人公开访问,留下安全隐患;要么就是权限卡得太死,连正常用户都访问不了资源。另外在项目协作用的时候,很多人图方便,给所有协作者都开了项目所有者的最高权限,这个其实很危险,如果协作者的账号出现泄露,整个项目的所有资源都会面临风险。谷歌云的权限是分层设计的,从组织层到项目层再到单个资源层,可以按需求分配最小权限,日常使用尽量不要给超出需求的高权限,这一点我感觉比较值得注意。
第三个是资源配额的问题。每个谷歌云的项目默认都会给不同类型的资源设置配额,比如某个区域最多能创建多少核的计算实例,最多能使用多少存储容量。很多开发者做测试的时候,开了多个实例没有及时释放,占用了所有配额,等到需要创建核心业务实例的时候,发现创建失败,半天找不到原因。所以闲置不用的资源要及时释放,不仅能空出配额,后续如果需要申请额外配额,也能提前规划,不会临时抱佛脚。
最后说一下常见网络连通性异常的排查顺序,一般按这个步骤走,大部分问题都能快速找到原因:首先看谷歌云的防火墙规则有没有放对对应的端口,然后看实例内部的系统防火墙有没有开放端口,再检查域名解析是不是指向了正确的IP地址,最后再看实例的资源负载是不是过高,导致服务崩溃。
对普通开发者来说,谷歌云的使用逻辑和其他公有云没有本质的区别,只要理清基础概念,注意配置细节,就能正常使用。不用过分追求复杂的架构,适合自己业务需求的配置就是合理的。
粤友钱优配提示:文章来自网络,不代表本站观点。