一文看懂云原生架构的演变过程

来源: 云巴巴 2021-12-16 13:17:13

人类的需求始终是技术快速发展的内置动力,云原生的快速发展也在于此。从去中心化、微服务到Serverless,服务在变、架构在变,新技术应用所带来的问题也在不断变化。云原生生态体系中的任何一项技术、任何一家厂商、任何一个终端用户,都在解决、适应乃至拥抱这种变化。用技术解决技术所带来的问题,由此出现了云原生“可观测性”。但在云原生庞大的生态体系中,K8s也好、可观测性也好,都属于冰山一角,背后有更多复杂的技术作为支撑。当我们在“享受”云原生所带来的变化的同时,也理应追溯云原生技术的演进脉络,思考云原生的技术价值与发展未来。

图片

(K8S技术分水岭,图片来源于网络)

从楼上这张图说起吧~要想完全掌握如图K8S的技术拓扑,毫不客气的讲:实在太难了! 然而,K8S也只是云原生体系中的一环。

譬如诺豆公司「化名」使用K8S已经2年了,而最近遇到的 Node 节点 NotReady 的问题,还不能完全凭借自有运维团队的能力解决,最终还是依靠公有云技术支持才得以定位到问题,在解决问题的过程中有如下插曲:

  • 根据日志报错,完全搜索不到相关技术贴「怀疑公有云厂商修改了K8S的调度脚本」;

  • 大量非关键日志掩盖/var/log/message中K8S pleg核心报错,经验不足,忽略关键日志,错失关键切入点;

  • 某公有云厂商的首次诊断结果是:runc 通道阻塞,需更换自研OS方可解决;

  • 方案被严厉拒绝后,派遣高工介入,修改结论为:docker 19.3.5 版本  runc 有BUG,升级至 19.3.15 可解决。

  • 核因并未找到,怀疑 max_pid 和 ulimit不足、机器负载高、及container频繁exec health check导致 runc hang,但无实据,而服务器状态很健康。

继而引发的思考:

  • 问题一:如何在公有云上获得更自主可控的运维管理能力;

  • 问题二:版本升级成本高昂,如何平滑升级;

  • 问题三:「上述问题出现在测试环境」,生产环境出问题的SLA如何保障。

问题一和三很容易解决,多云或者混合云方案,加强对供应商管理与对接。问题二很难,纵观整个行业,少有公司掌握自我升级能力,基本都要依赖公有云方案或者第三方协助。核心原因依旧在于K8S和云原生的技术门槛太高。但云原生和K8S大火是客观存在的事实,今天我们来聊聊云原生时代下技术演进

一、架构演变

图片

(大型机到微服务架构演变,图片来源于网络)

自20世纪70年代开始,无论是软件架构还是服务托管,都在逐步从中心化向去中心化转变,从宏服务向微服务转换,从大型机到微型机转换。在中国去IOE指导方针下,该现象尤为突出。

1.1 中心化->去中心化

70年代,早期的IT基础设施不成熟,以大型机为主,中心化运算、存储、调度,客户端终端只具备最基础的输出和展示功能。

该思想一直沿用至今,软件工程上诸如:Satstack、Puppet、OpenStack等。去中心化的代表:Ansible、Git、P2p协议、区块链技术、共识机制。前两者具备去中心化思想,后两者属于完全去中心化。两者没有绝对的好与坏。现代工程软件多为两者结合。

1.2 IaaS->PaaS->SaaS->Serverless

互联网早期以机房托管为主,即IaaS。随着公有云发力与成熟,逐步向云托管转向,有如下优势:

  • 各职能各司其职,关注各自领域即可;

  • 资源按需付费,相对自建,中小规模下有较大成本优势;

  • 弹性架构设计;

  • 服务开箱即用等。

近年云原生概念逐步普及并落地,强调软件应用应该生于云上,长于云上 。云原生本质并非一门确切的技术或者定义, 而是整套完整的生态体系,或者理解为愿景。

云原生给予的标准化架构及解决方案、高度运维自动化、自愈及配套基础设施等运维能力,倒逼运维向更高层领域转向。据公有云财报,目前,IaaS仍在市场上占据最大份额,云原生协助厂商打造不可变基础设施,本质上讲云原生是系统化能力,因此,未来PaaS、SaaS一定会后来居上。

1.3  All in One->微服务 

PMP提出的软件开发模式主要有

  • Build-and-Fix Model模型

  • 瀑布模型

  • 迭代模型

  • 增量模型

  • 喷泉模型

  • 演化模型

  • 敏捷开发模型

  • 混合模型

无论哪种模式均不是万能解药,最终目标都是准确快速交付。交付结果通常依赖:

  • 软件开发模型

  • 项目周期长短

  • 技术人员水平

但以上都无法解决“1个孕妇10个月生一胎,10个孕妇1个月生一胎”的问题。微服务解决了如上问题,且提供各接口遵循gRPC或Restful接口。但在服务切割、解耦、依赖关联上无法细化,经验主义。

  • 过粗的拆分效果不佳;

  • 过细的拆分,导致微服务爆增,资源浪费严重,接口和服务维护成本高昂;

  • 需求变更导致过去拆分策略不佳;

无论以上哪种情况,最终都要面临微服务暴增导致的“死星”式调用链。该情况并非只发生在巨头身上的极端情况。

图片

(死星调用链路,图片来源于网络)

最终,还是要回归到去中心化思想,回归到云原生。

我们一再强调,云原生提供的解决方案,是系统不可变基础设施服务网格(Service mesh)、边车(Sidecar)、服务编排和容器之类的新兴架构模式可以有效地阻止基于云的世界中出现的各类错误实践

二、云原生的架构

随着云平台的面世,尤其是出现了像 Kubernetes这样的容器编排技术后,服务网格就开始引起人们的关注。服务网格是应用程序服务之间的桥梁,它带来了许多附加功能,如

  • 流量控制

  • 服务发现

  • 负载平衡

  • 弹性

  • 可观察性

  • 安全性等

它使应用程序可以从应用程序级库中卸载这些功能,并允许开发人员专注于业务逻辑。

图片

(云原生技术应用演进,图片来源于网络)

诸如Istio之类的某些服务网格技术还支持混沌注入之类的功能,以便开发人员可以测试他们的应用程序,以及多达数十种相互依赖的微服务的弹性和健壮性。

应用和云通过Sidecar旁路容器作为桥梁交互,每个容器通过代理应用将本身所需要的进出,所以云就可以非常容易地通过这样一个代理,调节流量、做流量切分,这也是 Service Mesh 的基本原理。

服务网格非常适合放在平台即服务(PaaS)和容器即服务(CaaS)之上,并通过这些通用平台服务提升推行云计算过程的体验。

2.1 无服务器架构

在最近的云原生演进中,另一个备受关注的趋势是无服务器架构,也称为无服务器计算,基于公有云厂商算力,运行coding。无服务器比 PaaS 模型更进一步,因为它将服务器基础架构从应用程序开发人员那里完全抽象出来。开发只需关注代码即可。

在无服务器中,我们将业务服务编写为函数,并将这些函数部署到云基础架构中。无服务器技术的一些例子包括Amazon Lambda、Spring Cloud Function、Google Cloud Functions和Microsoft Azure Functions等。

无服务器模型位于云托管范围内的 PaaS 和 SaaS 之间,如下图所示:

图片

(各类服务架构,图片来源于网络)

对比单体服务与微服务,并非所有解决方案都应作为函数来实现。我们也不应使用无服务器函数替换所有微服务,就像我们不应替换所有单体应用,或将其分解为微服务一样。只有诸如用户身份验证或客户通知之类的细粒度业务和技术功能,才应该设计为无服务器函数。小结:合适的才是最重要的,无所谓先进 。

根据我们应用程序的功能性和非功能性需求(例如性能和可伸缩性以及事务边界等),我们应该为每个特定用例选择适当的单体、微服务或无服务器模型。常见的情况是,我们可能需要在一个解决方案架构中使用所有这三种模式。

如果设计不当,无服务器解决方案最终将变成纳米片,其中每个函数都与其他函数或微服务紧密结合,并且无法独立运行。

2.2 服务编排

当我们在说容器编排的时候,我们在说什么?

在传统的单体式架构的应用中,开发、测试、交付、部署单个组件不存在编排概念。而云原生时代,主要为了解决微服务和容器通信和HPA、VPA场景,运维将面临新挑战我们需要将单体式的架构拆分成越来越多细小的服务,运行在各自的容器中,那么该如何解决它们之间的依赖管理、服务发现、资源管理、高可用等问题?

在容器环境中,编排通常涉及到三个方面:

  • 资源编排

  • 负载编排

  • 服务编排

Kubernetes常见控制器编排方式:

  • Deployment

  • StatefulSet

  • DaemonSet

  • CronJob

  • Job

图片

(K8S编排调用链,图片来源于网络)

2.3 服务网格

与传统的微服务架构相比,基于服务网格的解决方案在连接性、可靠性、安全性和可观测性方面提供了诸多好处。

连接性:

  • 流量控制(路由、分流)

  • 网关(入口、出口)

  • 服务发现

  • A/B 测试、金丝雀

  • 服务超时、重试

可靠性:

  • 断路器

  • 故障注入/混沌测试

安全性:

  • 服务间身份验证(mTLS)

  • 证书管理

  • 用户身份验证(JSON Web Tokens)

  • 用户授权(基于角色的访问控制)

  • 数据加密

可观测性:

  • 监控

  • 遥测、仪表盘、指标

  • 分布式跟踪

  • 服务图

服务网格技术常见实现:

  • Istio

  • Linkerd

  • Consul Connect

图片

(面对K8S的托管服务网格,图片来源于网络)

三、总结

  • 互联网技术日新月异,技术不是终点,只是工具的一种,协助达成目标的过渡过程;

  • 云原生不是工具,而是体系架构和生态,是一套系统解决方案,更是标准基础设施;

  • 架构是演变出来的,不是设计规划出来的。

更多产品了解

欢迎扫码加入云巴巴企业数字化交流服务群

产品交流、问题咨询、专业测评

都在这里!

 

评论列表

为你推荐

腾讯云云服务器CVM的优势及其应用场景

腾讯云云服务器CVM的优势及其应用场景

其实有关于腾讯云云服务器的优势,在小编的上一篇文章有涉及到,本篇想和想伙伴们一起来具体进一下关于腾讯云的云服务器。 该云服务器用户可以拥有一个腾讯云 腾讯云云服务器的管理员通过账号,对 腾讯云云服务器有完全的控制权,总体来说管理简单。可以使用以及腾讯云控

2022-11-22 16:34:10

云手机怎么选?火山云云手机怎么样?有哪些优势以及应用场景?

云手机怎么选?火山云云手机怎么样?有哪些优势以及应用场景?

数字化转型的浪潮中,云手机技术正逐渐成为企业和个人用户的首选。市场上有多种云手机产品和服务,而火山引擎云手机,作为字节跳动旗下的创新产品,以其卓越的性能和创新的服务理念,为用户提供了一种全新的移动体验。本文将深入探讨火山引擎云手机的核心技术、产品优势以及如何帮助用户实现数字化转型。

2024-06-24 09:56:37

云服务器和物理服务器的区别是什么

云服务器和物理服务器的区别是什么

服务器的作用是在网络环境下,根据服务器提供到文件服务器不同类型的服务,数据库服务器,应用服务器,WEB服务器等;服务器的组成包括处理器,硬盘,内存,系统总线等,类似于一般的计算机架构,但由于需要提供高可靠性的服务,处理能力,稳定性,可靠性,安全性,可扩展性

2022-11-22 16:38:44

你有用到冬天的第一台云服务器吗?

你有用到冬天的第一台云服务器吗?

今年秋天一个红包引发的“血案”,秋天第一杯奶茶迅速蹿红各大平台,无论是小情侣,还是“单身狗”都纷纷晒出自己的秋天第一杯奶茶。 仔细一想,秋天确实也是喝奶茶的季节,那现在刚刚立冬不久,奶茶也喝过了,是时候着手上“云”了,还没上“云”的朋友们准备好使用冬天的

2022-11-23 09:43:44

阿里云云服务器因为这些功能被用户信赖

阿里云云服务器因为这些功能被用户信赖

我们选择云服务器时有很多厂家提供的云服务器产品可供我们选择,而从这些云服务器厂家的产品中先要选择一款适合自己的并不容易。虽然云服务器的部署时间并不长但是如果因为部署完云服务器之后并不能解决企业需要则会造成资源浪费以及一些不必要的成本,而且如果再选择一台云服

2022-11-24 10:19:14

腾讯云CVM服务器:多场景下的高效解决方案

腾讯云CVM服务器:多场景下的高效解决方案

在当今数字化时代,企业对于云计算的需求日益增长,而云服务器作为云计算的核心组件,其重要性不言而喻。腾讯云的云服务器(CVM)以其灵活性、可靠性和弹性,成为企业数字化转型的得力助手。本文将深入探讨CVM服务器在不同场景下的应用,并提供相应的解决方案,以确保企业能够充分利用云计算的优势,实现业务的高效运行和快速扩展。

2024-08-16 16:11:04

严选云产品

阿里云互联网医疗解决方案 阿里云互联网医疗解决方案利用云计算和人工智能技术,为医疗机构提供一站式服务,包括智慧医疗平台、医疗信息化协同、数据安全和远程医疗服务。它支持医疗资源优化配置,提升医疗服务效率和质量,同时确保数据安全和用户隐私。
决策参谋平台 决策参谋平台是辅助地方金融监管部门,宏观了解全国及其他省市的最新 7 + 4 地方金融机构监管动态,中观了解自身监管情况在全国的水位,微观了解本地区未覆盖的 7 + 4 地方金融机构的监管政策指标,用于完善本地区 7 + 4 的地方金融机构行业的监管政策法
泛微京桥通全程数字化采购管理系统 泛微京桥通全程数字化采购管理系统满足采购业务全程数字化, 实现供应商管理、采购需求、全网寻源、全网比价、电子招 投标、合同订单执行的全过程管理。
艺赛旗人事财务RPA流程自动化机器人 在人力资源领域中,不仅仅有众多标准化的场景的工作重复量大,并且在众多的场景中,又有特别的个性化数据需求,RPA可视化流程设计的特点很好的嫁接了HR们的需求。
环信客服云视频客服系统 环信客服云视频客服系统,视频+全景客服系统:用户可以多端呼叫客服,均可以发起单向或双向视频,同时双方也可以发送文字和图片交流,覆盖业务需要。 同时,企业业务可通过远程控制模块由真人客服做远程协助和诊断,让服务触达最后一公里,提高业务办理效率。
腾讯云微瓴智慧建筑系统案例 腾讯云微瓴是一个腾讯自主设计研发的,适合各行业的、安全、灵活且可以高效触达用户的物联网操作系统,在智慧建筑和智慧城市场景中担当物、信息与人协作的枢纽。微瓴智能建造平台是基于微瓴数字开放平台,通过对工程建造领域IOT数据、业务数据、空间数据的融合,为工程建造提供数据共建共用、模型共建共享、应用共建共生的一站式建筑 产业互联网平台。

甄选10000+数字化产品 为您免费使用

申请试用