从浅入深认识云,云平台架构的设计:上云,你准备好了吗?

@[TOC]

一、认识云

1、什么是云

云是一种比喻说法,就像我们平时看到的云一样,高出不胜寒,站在云端往下看,一切都很渺小。 同样的,在云上部署你的应用,可以享受云端很多企业的经验总结,很多坑已经早就被排除掉了。这些企业、软件、系统,会集结成一套标准的套路来使用,所以,就像站在巨人的肩膀上,站在最高点来观察从开发到发布到运维的全过程。

云,同样有敏捷的感觉,从发布到弹性伸缩,又高又快。

云,主要指基于云计算和云服务的应用。 云服务通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源,如IT和软件、互联网相关服务,甚至其他服务。云服务的特点是用户享受的所有资源、所有应用程序全部都由一个存储和运算能力超强的云端后台来提供。云可以分为私有云、公有云、混合云及行业云等等。

举一个很接地气的例子,"云"就像是我们租房子,当没有能力购买一套完整的房子的时候,租房子可以说是一个完美的选择,云同样如此,云提供了一整套的服务,稳定性、安全性、性能、服务质量统统一套租下。即,"拎包入住"。 但是,租房的缺点就是无法实现一些创新,而买下的房子可以按照自己所想装修成自己喜欢的样子。云服务同样如此,云上提供了大厂的成熟的套路,但是创新性就会降低。所以,按需"上云"。

2、云服务的优势

利用虚拟化技术,提高资源利用率、提高网络利用率。

在虚拟化的基础上,把一些硬件基础架构软件化,通过软件定义把CPU、内存、存储、网络、吞吐量、性能,统一用一个数字来表示,底层只要实现这个数字,就可以自动通过虚拟化、通过伸缩性来完成这些标准。也就是提高了兼容性

所有人工操作都可以自动化,所有的操作都是通过一个模板来完成的。不管是建一个虚机、划一次磁盘、提供一个服务、实现一个容灾、实现一个双活,都可以自动的通过虚拟化技术来实现底层资源的分配,提高效率

所有的服务都叫服务,每个服务都有自己的QOS(quality of service),就是指我们所有对外的服务都有个承诺,比如说高可用(四个九)、稳定性、安全性。这就是真真正正的云服务了。

3、云平台的价值

(1)敏捷交付

在云平台上,所有的资源都是可以自动的、快速的递交和提供的。 除此以外,云平台有很多CICD对接的基本功能,可以快速创建虚拟机容器、快速发布应用、快速对外提供网络服务、快速测试......

对于传统企业里面,应用可能是每月一发布,几周一发布。但是在云平台上,可以实现每小时一发布,几分钟一发布都是可以实现的。

(2)统一运维

云监控都是自动化的,有着统一的监控平台。有各种各样的仪表盘,可以设置大量的告警,并且将这些告警根据严重等级等进行事件归因处理,然后通知到你。

私有云同样可以使用大量的开源组件实现监控平台。

(3)云安全

当一个企业有着一定的业务量,有一定的客户源的时候,就会吸引一些黑客来攻击你。如果是自建机房,需要进行许多的安全防护手段。

而云服务有着统一的安全处理,比如说阿里云、腾讯云、华为云等,会提供免费的DDos普通防御,甚至可以付费购买一些高防。

(4)按量付费

云平台可以按需购买,而不是像自建机房一次性投资。

可以在项目初期节省大量的资金流。

(5)计费分摊

一个企业变得比较大、部门比较多的时候,部门之间划账是很复杂的,传统企业是算不清的,但是上了云之后,所有资源都有标签,把这些标签跟业务部门相关之后,很容易梳理出一个业务部门的每月、每年的分账,很清楚的计算每个部门的成本和收入。

(6)弹性容量

如果有的企业平时压力很小,但是某些时候业务量猛增,比如春运期间、双十一期间。

很多企业平时在自己的机房运维,跑着正常的业务,同时也在云平台部署了一份,只有业务量猛增的时候才开启云平台的服务。这个时候,云平台的服务可以根据压力开启10个节点或者50个、100个节点,等交易结束之后,再把这几个节点关闭,实现弹性容量,大大的节约成本。

(7)全球覆盖

当业务扩展到国外时,可以先使用云平台试水,发现业务可行,再逐渐将自己的业务扩展出去。

(8)稳定性

云平台上所有的服务都是非常可靠的,能达到四个九、五个九,甚至说对象存储能达到十几个九。

在这个条件下,基本上能保证所有业务基本不会受影响。即使有极端以外造成的云平台故障,一般云平台也会有一些补偿。

(9)背锅答疑

很多情况下,对运维工程师来说,遇到硬件等问题不需要背锅了,而是统统交给云平台。

而对于一般的疑问,云平台通常会有专门的客服来答疑解惑。

同时,很多一些云平台,对于深度合作伙伴还会有一些培训、证书等,彰显云平台丰富的实战经验。

二、云平台的分类

1、技术分类

上云之前的机房:网络、存储storage、server服务器、虚拟化、操作系统、中间件、运行环境、数据、应用等等。

IaaS(Infrastructure as a Service - 基础设施即服务):上面的内容保持,基础设施进行统一管理。所有IaaS都能实现网络、存储、虚拟化、服务器,你可以更多时间关注与不同的操作系统、中间件、环境,并且在上面跑着不同的应用和数据。

PaaS(Platform as a Service - 平台即服务):提供了基础架构云以外,并且额外提供了操作系统、中间件(SQL、NoSQL等)、运行时环境(python、java)。你只需要设计数据库、把数据展现给用户即可。也就是说,PaaS,只需要关心业务即可,不需要关心平台的细节。

SaaS(Software as a Service - 软件即服务):提供平台、数据、应用。比如说支付相关的业务完全使用第三方云服务。

所以,一个企业的核心业务,可以使用PaaS进行搭建部署,但是非核心业务比如说支付、用户认证等可以直接使用第三方SaaS平台提供的服务。如果该企业的技术能力很强,比如说想要自己定制一个中间件或者运行环境,可以考虑使用IaaS。

2、场景分类

3、为什么选择混合云

大部分企业,在自己的自有机房保持不变的情况下,把更多的业务向云上转移,两边可以互通。

举一个简单的例子。大家在有自己的房子的情况下,出去旅游可以住豪华酒店,实现"拎包入住",云就是这种感觉,私有云就是自己的房子。

比如说一些批处理任务,只有晚上几个小时来执行,并且并行性非常大,通常几百个节点一起执行。这时如果放在自己的数据中心就很不划算,单独占用几百台服务器,只有晚上使用。这个时候就可以使用云,按需进行节点的开启。

还有一些试点业务,也可以在云上部署。

三、混合云

1、入口层分流

(1)CDN内容分发网络

标准CDN逻辑结构:内容缓存、DNS解析、最后十公里传输、负载均衡。 CDN还会有等待队列的功能,也就是实现限流:

通常CDN还会有Captcha图灵测试功能,测试是否是机器人还是人为操作:

(2)CDN工作原理

用户通过访问域名,通过DNS解析到CDN的域名,CDN会找到用户最近服务器节点,进行加速访问。当CDN没有缓存数据时,会通过负载均衡访问源站,这个源站就有可能通过公有云或者私有云进行部署。

(3)SLB软件负载均衡器

SDN:软件定义网络。

网络层次:通用网络(2-4层)和HTTP(5-7层)。

多种实现:通用网络(LVS/F5-LTM/HAProxy)、HTTP(nginx/Tengine/F5-LTM/HAProxy)。

(4)LVS直接路由

(5)LVS IP隧道(不建议使用)

(6)LVS 全地址转换

(7)LVS 部分地址转换

(8)Nginx反向代理

(9)阿里云SLB

(10)云平台SLB基本功能

连接复用;内容缓存;TCP缓冲;HTTP压缩;SSL加速和卸载;轮询等算法负载均衡;会话粘滞(会话保留);资源健康检查;资源组弹性伸缩

2、云安全防御

(1)云平台的安全防御

通过大数据分析,防御潜在的威胁。 通过人工智能,加固内容的安全。

(2)系统层安全

进行常规的入侵检测;查杀操作系统和软件内容的病毒;漏洞智能修复;网页防篡改能力;基线一键检查;潜在安全风险告警。

(3)网络层安全

DDos全面防御:洪泛、重放、畸形包。 混合云全面支撑:公有云、私有云。 吞吐量巨大:短时攻击峰值GB->TB。

(4)应用层安全

轻松防御OWASP十大攻击。

(5)安全防御思路

先用DDos防御,剩下的数据流用WAF防御,最后用负载均衡器发到不同的系统,再用系统安全层。 (网络为先,应用其次,系统最后:DDos->WAF->SLB->系统安全

3、容灾多活

(1)网络互联

VPC就是云平台上建的数据中心,必然是两个不同的机房,两个机房共同创建一些子网,在子网中可以架一些服务器,这些服务器共同形成了VPC。 自有数据中心,通过VPN连到公有云,通过隧道技术能够很好地实现点到点或者多到多之间的加密传输。

公有云和私有云之间实现容灾多活,公有云的数据同步一份到私有云。

同时可以实现单元化的架构,以业务形态、就近原则实现单元化。

(2)数据同步

通过DB网关:全量同步+增量同步

4、混合云技术难点

(1)安全性

安全性既是混合云的优势,又是混合云的难点。

统一帐号管理:单点登录、MFA。 公有云和私有云之间需要使用共同的用户帐号管理系统,并且有着多因素登录,比如说手机短信登录、二维码等等。需要实现单点登录、oauth等方式。

合规性:PCI支付拍照、外部审计、GDPR个人隐私保护。 很多证书审计非常复杂,可能需要几个月到半年。

网络隔离:物理隔离->软件隔离、防火墙功能、堡垒机。

(2)运维

统一发布管理:公有云私有云 CI/CD共享、版本同进同退。

统一监控:流量追踪、故障排除、用户行为追踪。

资源调配:性能容量匹配、弹性伸缩、QoS质量保障。

5、企业发展路线分析

四、cloud Native 云原生

1、认识云原生

云原生15原则:第一类是CICD,跟软件发布相关;第二类是弹性,跟应用本身的特质相关;第三类是解耦,应用和应用之间的关系;第四类是中台,体现应用的一种对外服务的形式。包含了这15个原则,那么就能认为是一个很好的云原生应用了。

现在有很多人盲目的上云,不是所有应用都适合云,也不是所有应用都能称为云原生,云原生也并不就是指的容器,云原生的概念远不止kubernetes,远不止容器。

云原生,也不单纯的指kubernetes,它只是容器化过程当中的编排环节的一个产品,kubernetes目前确实是最火的,但能不能一直火下去还未必。

CICD:持续交付、持续集成、持续部署,这种能力是云上的一个关键能力,从开发到测试到部署到运维,一个人可以完成整个微服务的全盘管理,全生命周期管理,这就是Dev-Ops。

应用拆分成一个个微服务,通过服务治理、服务发现等功能互相关联起来,最终体现出一种平台化的特质,这才是主流,而云原生恰恰可以满足微服务的需要。

康威定律:微服务要求我们把服务做的足够小,几个人甚至一个人就可以完成整个服务的从前到后的完整流程,云原生刚好满足康威定律,和CICD完美集成。

2、CICD思考

(1)一份代码多次发布

一个应用 = 一份代码库 = 多个版本(开发、测试、生产版本)。

(2)编译发布和运行分离

一次发布 = 一次编译 = 多配制多环境发布。

当一个应用代码build完成之后,会打成一个工件,我们叫做CI-持续集成,一旦这个工件打成之后就不能再改动了。 这个工件可以发布到开发环境、测试环境、生产环境。一个版本一个工件。

工件的配置,是由环境变量决定的,这样的工件,就是在任何环境都是可以运行的。 而我们测试,其实就是在测试这个工件,工件完成了开发测试和准生产测试,那么我们就有信心在生产环境运行。

由于工件不可改动,唯一可以改动的就是下图的config,可以通过环境变量、传参给我们应用,也可以使用配置中心比如nacos进行配置。

(3)环境一致性

环境不一致,就会造成非常大的问题。

环境包括:人员、工具(数据库等)、环境(端口、防火墙策略等)

3、弹性思考

(1)无状态进程

应用不共享磁盘,而是将有状态的数据外置。

下图示左边的方案,无法做到应用的扩容,而右边的方案,可以实现应用的大量扩容。

(2)同步并发

多线程+多进程+多沙盒、多虚拟机

(3)快速启动优雅关闭

无状态+无依赖+秒级启停。

很多应用在优雅关闭时,都会处理一些任务比如说清缓存等等,但是设计这些功能的时候也要考虑时间,宗旨就是实现快速启动、快速关闭。

4、解耦思考

(1)依赖明示

在gradle/maven里面,就对依赖、第三方库和版本号进行指定,再辅以Dockerfile,提前准备好需要的环境的镜像,直接一键部署即可。

(2)配置和密码分离

开源精神 + 环境变量 + 集中式管理。

同一套代码,有时候不光自己公司使用,合作伙伴或者开源的场景都会用到,此时一些数据库或者中间件的用户名密码啊,要完全移除。 这些信息放到环境变量里或者配置中心里。

最核心的内容,例如秘钥密码,进行再加密。不光是外部人员看不到,我们内部人员也看不到,最终实现一套开源精神。

(3)后台服务

无本地盘依赖+无启动依赖+可熔断降级。

所有的数据库访问、邮件等第三方服务,全部剥离出去。整个过程中,采用网络TCP进行通讯。

(4)端口绑定

全自动端口映射+服务注册和发现。

应用之间绑定不同的端口,并且服务之间的发现、调用并不需要知道对方的ip和端口,只需要知道服务名即可。就像SpringCloud的OpenFeign一样,应用之间只需要注册到同一个注册中心上,就可以通过服务名进行互相调用,自动进行负载均衡,这样服务可以更加方便的扩容。

4、中台思考

(1)日志流

越来越多的节点、越来越多的微服务,会导致越来越多的日志需要收集,并且还希望对日志进行多维度的分析

日志流量会越来越大,日志流占用带宽、资源、存储空间是非常巨大的。

思路:减少不必要的日志,做好强大的日志处理分析,通过归档和备份减少需要管理的在线日志数量。这样既可以省成本,也可以增加日志的有效性。

所以,日志就输出到标准输出,不代理、不保存、不处理。后面通过日志平台进行统一处理。

(2)管理作业

同一代码库 + 管理服务 + 定时器/事件驱动。

云原生的作业并不是SpringBatch或者cron表达式定义的作业,而是一个API,通过云平台的定时器进行触发,调用我们的一个API或者发送到消息队列一个消息

(3)认证授权

(4)监控遥测

健康 + 性能 + 追踪。

实时对应用保持健康检查,根据性能进行合理的扩展(CPU、内存等),时刻追踪应用的出错情况,并进行及时的告警和呼叫。

(5)API经济

所有的业务平台,需要对外提供一些基本的API,能让第三方快速调用。

也就是常说的中台思维。业务中台是阿里提出的,去中台同样也是阿里提出的。

五、IaaS、PaaS、SaaS架构设计

IaaS、PaaS、SaaS架构设计分析,彻底吃透云平台

相关推荐
努力的布布22 分钟前
SpringMVC源码-AbstractHandlerMethodMapping处理器映射器将@Controller修饰类方法存储到处理器映射器
java·后端·spring
PacosonSWJTU27 分钟前
spring揭秘25-springmvc03-其他组件(文件上传+拦截器+处理器适配器+异常统一处理)
java·后端·springmvc
记得开心一点嘛36 分钟前
在Java项目中如何使用Scala实现尾递归优化来解决爆栈问题
开发语言·后端·scala
黄俊懿1 小时前
【深入理解SpringCloud微服务】手写实现各种限流算法——固定时间窗、滑动时间窗、令牌桶算法、漏桶算法
java·后端·算法·spring cloud·微服务·架构
2401_857439692 小时前
“衣依”服装销售平台:Spring Boot技术应用与优化
spring boot·后端·mfc
Jerry.ZZZ2 小时前
系统设计,如何设计一个秒杀功能
后端
企业码道刘某3 小时前
EasyExcel 大数据量导入导出解决方案进阶
java·后端·mybatis
九圣残炎4 小时前
【springboot】简易模块化开发项目整合Redis
spring boot·redis·后端
.生产的驴4 小时前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript