云原生是什么

目录

  • 1. 云原生是什么
    • 1.1. 微服务
    • 1.2. DevOps
    • 1.3. 持续交付
    • 1.4. 容器化
  • 2. 什么是云原生
    • 2.1. 云原生的诞生
    • 2.2. 云原生基金会
    • 2.3. 主要区别: 云原生与传统企业应用

1. 云原生是什么

云原生是面向"云"而设计的应用, 因此技术部分依赖于传统云计算的 3 层概念, 基础设施即服务 (IaaS)、平台即服务 (PaaS) 和软件即服务 (SaaS)。

例如, 敏捷的不可变基础设施交付类似于 IaaS, 用来提供计算网络存储等基础资源, 这些资源是可编程且不可变的, 直接通过 API 可以对外提供服务; 有些应用通过 PaaS 服务本来就能组合成不同的业务能力, 不一定需要从头开始建设; 还有一些软件只需要"云"的资源就能直接运行起来为云用户提供服务, 即 SaaS 能力, 用户直接面对的就是原生的应用。

原生就是土生土长的意思, 我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的, 要充分利用云资源的优点, 比如️云服务的弹性和分布式优势。

1.1. 微服务

微服务解决的是我们软件开发中一直追求的低耦合+高内聚, 记得有一次我们系统的接口出了问题, 结果影响了用户的前台操作, 于是黎叔拍案而起, 灵魂发问: "为啥这两个会互相影响? ! "

微服务可以解决这个问题, 微服务的本质是把一块大饼分成若干块低耦合的小饼, 比如一块小饼专门负责接收外部的数据, 一块小饼专门负责响应前台的操作, 小饼可以进一步拆分, 比如负责接收外部数据的小饼可以继续分成多块负责接收不同类型数据的小饼, 这样每个小饼出问题了, 其它小饼还能正常对外提供服务。

1.2. DevOps

DevOps 的意思就是开发和运维不再是分开的两个团队, 而是你中有我, 我中有你的一个团队。我们现在开发和运维已经是一个团队了, 但是运维方面的知识和经验还需要持续提高。

1.3. 持续交付

持续交付的意思就是在不影响用户使用服务的前提下频繁把新功能发布给用户使用, 要做到这点非常非常难。我们现在两周一个版本, 每次上线之后都会给不同的用户造成不同程度的影响。

1.4. 容器化

容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了, 每个服务都被无差别地封装在容器里, 可以被无差别地管理和维护, 现在比较流行的工具是 docker 和 k8s。

所以你也可以简单地把云原生理解为: 云原生 = 微服务 + DevOps + 持续交付 + 容器化

2. 什么是云原生

技术的变革, 一定是思想先行, 云原生是一种构建和运行应用程序的方法, 是一套技术体系和方法论。云原生 (CloudNative) 是一个组合词, Cloud+Native。Cloud 表示应用程序位于云中, 而不是传统的数据中心; Native 表示应用程序从设计之初即考虑到云的环境, 原生为云而设计, 在云上以最佳姿势运行, 充分利用和发挥云平台的弹性+分布式优势。

2.1. 云原生的诞生

提到云原生, 不能不提"Pivotal"和"Matt Stine", 都与云原生的起源有关。

Pivotal 公司的 Matt Stine 于 2013 年首次提出云原生 (CloudNative) 的概念;

2015 年, 云原生刚推广时, Matt Stine 在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征: 12 因素、微服务、自敏捷架构、基于 API 协作、扛脆弱性;

2017 年, Matt Stine 在接受 InfoQ 采访时又改了口风, 将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理 6 特质;

Pivotal 最新官网对云原生概括为 4 个要点: DevOps+持续交付+微服务+容器。

cloud native
  • 微服务

微服务解决的是我们软件开发中一直追求的低耦合+高内聚, 记得有一次我们系统的接口出了问题, 结果影响了用户的前台操作, 于是黎叔拍案而起, 灵魂发问: "为啥这两个会互相影响? ! "

微服务可以解决这个问题, 微服务的本质是把一块大饼分成若干块低耦合的小饼, 比如一块小饼专门负责接收外部的数据, 一块小饼专门负责响应前台的操作, 小饼可以进一步拆分, 比如负责接收外部数据的小饼可以继续分成多块负责接收不同类型数据的小饼, 这样每个小饼出问题了, 其它小饼还能正常对外提供服务。

  • DevOps

DevOps 的意思就是开发和运维不再是分开的两个团队, 而是你中有我, 我中有你的一个团队。我们现在开发和运维已经是一个团队了, 但是运维方面的知识和经验还需要持续提高。

  • 持续交付

持续交付的意思就是在不影响用户使用服务的前提下频繁把新功能发布给用户使用, 要做到这点非常非常难。我们现在两周一个版本, 每次上线之后都会给不同的用户造成不同程度的影响。

  • 容器化

容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了, 每个服务都被无差别地封装在容器里, 可以被无差别地管理和维护, 现在比较流行的工具是 docker 和 k8s。

2.2. 云原生基金会

云原生计算基金会 (Cloud Native ComputingFoundation, CNCF) 成立与 2015 年 12 月 11 日, 由谷歌与 Linux 基金会联合创办, 成立这个非盈利组织的初衷为推广孵化和标准化云原生相关的技术:

  1. 推动云原生计算可持续发展;
  2. 帮助云原生技术开发人员快速地构建出色的产品。

CNCF 成立最初只有十多家创始成员, 包含谷歌、IBM、Red Hat、VMware……经过几年的发展, 目前 CNCF 已经有超过 300 个会员, 涵盖国内外的知名 IT 厂商, 包括微软、亚马逊、苹果、阿里巴巴、华为等, 发展地十分迅速。

起初 CNCF 对云原生 (Cloud Native) 的定义包含以下三个方面:

  1. 应用容器化
  2. 面向微服务架构
  3. 应用支持容器的编排调度

到了 2018 年, 随着近几年来云原生生态的不断壮大, 所有主流云计算供应商都加入了该基金会, 且从 Cloud Native Landscape 中可以看出云原生有意蚕食原先非云原生应用的部分。CNCF 基金会中的会员以及容纳的项目越来越多, 该定义已经限制了云原生生态的发展, CNCF 为云原生进行了重新定位。

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中, 构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。

这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段, 云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

2.3. 主要区别: 云原生与传统企业应用

云原生应用传统的企业应用
可预测。云原生应用符合旨在通过可预测行为最大限度提高弹性的框架或“合同”。云平台中使用的高度自动化的容器驱动的基础架构推动着软件编写方式的发展。第一次作为 12 因素应用记录的 12 个原则就是阐释此类“合同”的良好示例。不可预测。传统应用的架构或开发方式使其无法实现在云原生平台上运行的所有优势。此类应用通常构建时间更长,大批量发布,只能逐渐扩展,并且会发生更多的单点故障。
操作系统抽象化。云原生应用架构要求开发人员使用平台作为一种方法,从底层基础架构依赖关系中抽象出来,从而实现应用的简单迁移和扩展。实现云原生应用架构最有效的抽象方法是提供一个形式化的平台。Tanzu 非常适用于在谷歌云端平台 、微软 Azure 或亚马逊云服务等基于云的基础架构上运行。依赖操作系统。传统的应用架构允许开发人员在应用和底层操作系统、硬件、存储和支持服务之间建立紧密的依赖关系。这些依赖关系使应用在新基础架构间的迁移和扩展变得复杂且充满风险,与云模型相背而驰。
合适的容量。云原生应用平台可自动进行基础架构调配和配置,根据应用的日常需求在部署时动态分配和重新分配资源。基于云原生运行时的构建方式可优化应用生命周期管理,包括扩展以满足需求、资源利用率、可用资源编排,以及从故障中恢复,最大程度减少停机时间。过多容量。传统 IT 会为应用设计专用的自定义基础架构解决方案,这延迟了应用的部署。由于基于最坏情况估算容量,解决方案通常容量过大,同时几乎没有能力继续扩展以满足需求。
协作。云原生可协助 DevOps,从而在开发和运营职能部门之间建立密切协作,将完成的应用代码快速顺畅地转入生产。孤立。传统 IT 将完成的应用代码从开发人员“隔墙”交接到运营,然后由运营人员在生产中运行此代码。企业的内部问题之严重以至于无暇顾及客户,导致内部冲突产生,交付缓慢折中,员工士气低落。
持续交付。IT 团队可以在单个软件更新准备就绪后立即将其发布出去。快速发布软件的企业可获得更紧密的反馈循环,并能更有效地响应客户需求。持续交付最适用于其他相关方法,包括测试驱动型开发和持续集成。瀑布式开发。IT 团队定期发布软件,通常间隔几周或几个月,事实上,当代码构建至发布版本时,该版本的许多组件已提前准备就绪,并且除了人工发布工具之外没有依赖关系。如果客户需要的功能被延迟发布,那企业将会错失赢得客户和增加收入的机会。
独立。微服务架构将应用分解成小型松散耦合的独立运行的服务。这些服务映射到更小的独立开发团队,可以频繁进行独立的更新、扩展和故障转移/重新启动操作,而不影响其他服务。依赖。一体化架构将许多分散的服务捆绑在一个部署包中,使服务之间出现不必要的依赖关系,导致开发和部署过程丧失敏捷性。
自动化可扩展性。大规模基础架构自动化可消除因人为错误造成的停机。计算机自动化无需面对此类挑战,可以在任何规模的部署中始终如一地应用同一组规则。云原生还超越了基于以虚拟化为导向的传统编排而构建的专用自动化。全面的云原生架构包括适用于团队的自动化和编排,而不要求他们将自动化作为自定义方法来编写。换句话说,自动化可轻松构建和运行易于管理的应用。手动扩展。手动基础架构包括人工运营人员,他们负责手动构建和管理服务器、网络及存储配置。由于复杂程度较高,运营人员无法快速地大规模正确诊断问题,并且很容易执行错误实施。手动构建的自动化方法可能会将人为错误的硬编码到基础架构中。
快速恢复。容器运行时和编排程序可在虚拟机上提供动态的高密度虚拟化覆盖,与托管微服务非常匹配。编排可动态管理容器在虚拟机群集间的放置,以便在发生故障时提供弹性扩展和恢复/重新启动功能。恢复缓慢。基于虚拟机的基础架构对于基于微服务的应用来说是一个缓慢而低效的基础,因为单个虚拟机启动或关闭的速度很慢,甚至在向其部署应用代码之前就存在很大的开销。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/84958.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5、YOLOv8改进:SEAttention 通道注意力机制

基于通道的注意力机制 源自于 CVPR2018: Squeeze-and-Excitation Networks 官方代码:GitHub - hujie-frank/SENet: Squeeze-and-Excitation Networks 如图所示,其实就是将不同的通道赋予相关的权重。Attention机制用到这里用朴素的话说就是,…

在线状态监测如何使冷却塔维保管理受益

工业冷却塔作为关键的热交换装置,在许多生产流程中发挥着重要作用。为了保持其高效稳定的运行,实施连续的冷却塔状态监测变得至关重要。本文将以PreMaint设备数字化平台为例,探讨为什么建议采用远程冷却塔状态监测,以及如何借助振…

uniapp 持续获取定位(登录状态下才获取)(不采用定时器)(任意页面都可监听定位改变)

基于上次文章做了优化和改良,保证在登录状态下才获取定位信息 uniapp 小程序实时且持续获取定位信息(全局设置一次)(单页面监听定位改变)(不采用定时器)_uniapp小程序定位_前端小胡兔的博客-CSDN博客本篇文章实现了uniapp 微信小程序实时获取定位信息,小程序打开即可持续获取定…

科技巨头纷纷押注,Web3钱包能否成为撬动行业的支点?

出品|欧科云链研究院 作者|Hedy Bi 在PayPal推出稳定币并引发行业热议之际,公链Aptos昨日宣布与微软合作,共同探索与资产代币化、数字支付和中央银行数字货币相关的创新解决方案。尽管比尔盖茨对加密货币持摇摆态度,…

CEC2013(MATLAB):淘金优化算法GRO求解CEC2013的28个函数

一、淘金优化算法GRO 淘金优化算法(Gold rush optimizer,GRO)由Kamran Zolf于2023年提出,其灵感来自淘金热,模拟淘金者进行黄金勘探行为。淘金优化算法(Gold rush optimizer,GRO)提…

Java【Spring】使用注解, 更简单的存储和获取 Bean

文章目录 前言一、存储 Bean1, 配置文件2, 五大类注解Bean 的命名规则 3, 方法注解Bean 的命名规则 二、获取 Bean1, 属性注入2, Setter 注入3, 构造方法注入4, Autowired 和 Resource 的区别5, 同一个类型的多个 Bean 注入问题 总结 前言 各位读者好, 我是小陈, 这是我的个人主…

AST入门与实战(一):基于babel库的js反混淆通用模板

AST入门与实战(一):基于babel库的js反混淆通用模板 首发地址:http://zhuoyue360.com/jsnx/106.html 1. 模板代码 通用模板来源自菜老板的知识星球. const fs require(fs); const types require("babel/types"); const parser require("babel/parser")…

【css】css中使用变量var

CSS 变量可以有全局或局部作用域。 全局变量可以在整个文档中进行访问/使用,而局部变量只能在声明它的选择器内部使用。 如需创建具有全局作用域的变量,请在 :root 选择器中声明它。 :root 选择器匹配文档的根元素。 如需创建具有局部作用域的变量&am…

【ARM 调试】如何从 crash 信息找出问题原因

一、问题背景 粉丝在进行 ARM-A 系列软件编程时遇到以下问题,串口打印这段日志后就重启了,粉丝求助问是什么原因? Unhandled Exception in EL3. x30 0x0000000000b99b84 x0 0x00000000179a25b0 x1 …

【笔记】树状数组

【笔记】树状数组 目录 简介引入1. 直接暴力2. 维护前缀和数组总结 定义前置知识: lowbit ⁡ \operatorname{lowbit} lowbit 操作区间的表示方法操作单点修改前缀和查询任意区间查询 例题1: 单点修改,区间查询例题2: 区间修改,单点查询例题3:…

苏州OV泛域名RSA加密算法https

RSA加密算法是一种非对称加密算法,它被广泛应用于信息安全领域。与对称加密算法不同,RSA加密算法使用了两个密钥,一个公钥和一个私钥。公钥可以公开,任何人都可以使用它加密信息,但只有私钥的持有者才能解密信息。RSA加…

探索美颜SDK技术:实现精准人脸美化的算法与挑战

在现代社交媒体和直播平台的兴起中,美颜技术已成为一种不可或缺的元素,让用户能够在镜头前展现出最佳的自己。这种技术的背后有着复杂而精密的算法,由美颜SDK驱动,以实现精准人脸美化。本文将探讨这些算法的核心原理、应用领域以及…

Multimap用法详解

Multimap Multimap 是 Google 的 Guava 库为 Java 引入的一种新集合类型&#xff0c;它允许将多个值存储在单个键下。它被设计为一种替代 Map<K, List> 或 Map<K, Set>&#xff08;JDK 标准集合框架&#xff09;的方案。 Multimap<K, V> 扩展了 AbstractMul…

【金融量化】Python实现根据收益率计算累计收益率并可视化

1 理论 理财产品&#xff08;本金100元&#xff09; 第1天&#xff1a;3% &#xff1a;&#xff08;13%&#xff09; ✖ 100 103 第2天&#xff1a;2% &#xff1a;&#xff08;12%&#xff09;✖ 以上 103 2.06 第3天&#xff1a;5% : &#xff08;15%&#xff09;✖ 以上…

SpringBoot中间件使用之EventBus、Metric、CommandLineRunner

1、EventBus 使用EventBus 事件总线的方式可以实现消息的发布/订阅功能&#xff0c;EventBus是一个轻量级的消息服务组件&#xff0c;适用于Android和Java。 // 1.注册事件通过 EventBus.getDefault().register(); // 2.发布事件 EventBus.getDefault().post(“事件内容”); …

【Linux】带你深入了解多路转接

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录 &#x1f449;多路转接…

竞赛项目 深度学习花卉识别 - python 机器视觉 opencv

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &a…

Maven 生成(打包)带有依赖的可以直接执行的一个 jar 包

在pom中增加如下内容 <build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><archive><manifest><mainClass>com.example.xxx.YourClass</mainClass></manifest></…

Windows和Linux系统上的矢量运算:指令级并行计算SIMD(SSE/AVX)应用细节以及相关跨平台的源码解释

注&#xff1a;本文的SIMD&#xff0c;指的是CPU(base intel x86 architecture)指令架构中的相关概念。不涉及GPU端的算力机制。下面的代码在Win10和Linux上均可用。 基本概念 SSE: Streaming SIMD Extensions, x86 architecture AVX: Advanced Vector Extensions SIMD&#…

Springboot 多数据源 dynamic-datasource动态添加移除数据源

0.前言 上一篇文章我们讲了如何通过多数据源组件&#xff0c;在Spring boot Druid 连接池项目中配置多数据源&#xff0c;并且通过DS注解的方式切换数据源&#xff0c;《Spring Boot 配置多数据源【最简单的方式】》。但是在多租户的业务场景中&#xff0c;我们通常需要手动的…