云原生架构

1. 何为云原生?
很多IT业内小伙伴会经常听到这个名词,那么什么是云原生呢?云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。 当今时代,众多企业希望构建高度可扩展、灵活且有弹性的应用程序,以便能够快速更新以满足客户需求。 因此,推荐使用本质上支持云基础设施上的应用程序开发的现代工具和技术。 这些云原生技术支持对应用程序进行快速、频繁的更改,而不影响服务交付,从而为采用者提供创新的竞争优势。

2. 云原生有何优势?

(1)提高效率
云原生开发带来了 DevOps 和持续交付 (CI/CD) 等敏捷实践。 开发人员使用自动化工具、云服务和现代设计文化快速构建可扩展的应用程序。

(2)降低成本
通过采用云原生方法,公司无需投资昂贵的物理基础设施的采购和维护。 这可以长期节省运营支出。 构建云原生解决方案所节省的成本也可能使您的客户受益。

(3)提高可用性
云原生技术使公司能够构建有弹性且高度可用的应用程序。 功能更新不会导致停机,公司可以在旺季扩大应用程序资源,以提供积极的客户体验。

3. 什么是云原生应用程序?
云原生应用程序是由多个小型、相互依赖的服务(称为微服务)组成的软件程序。 传统上,开发人员使用包含所有必需功能的单个块结构构建整体应用程序。 通过使用云原生方法,软件开发人员将功能分解为更小的微服务。 这使得云原生应用程序更加敏捷,因为这些微服务独立工作并需要最少的计算资源来运行。

4. 云原生应用与传统企业应用的比较
传统的企业应用程序是使用不太灵活的软件开发方法构建的。 开发人员通常会在发布大量软件功能进行测试之前对其进行开发。 因此,传统企业应用程序的部署时间较长且不可扩展。

另一方面,云原生应用程序使用协作方法,并且在不同平台上具有高度可扩展性。 开发人员使用软件工具在云原生应用程序中高度自动化构建、测试和部署过程。 您可以立即设置、部署或复制微服务,这是传统应用程序无法实现的操作。

5. CNCF

提到云原生就必须介绍一个组织 - 云原生计算基金会 (CNCF) ,它是一个开源基金会,可帮助组织启动云原生之旅。 CNCF 成立于 2015 年,支持开源社区开发关键的云原生组件,包括 Kubernetes等,很多大型云厂商是该基金会成员,如亚马逊。

6. 什么是云原生应用架构?
云原生架构结合了开发团队用来构建和运行可扩展的云原生应用程序的软件组件。 CNCF 将不可变基础设施、微服务、声明式 API、容器和服务网格列为云原生架构的技术模块。

(1)不可变的基础设施 Immutable Infra
不可变的基础设施意味着用于托管云原生应用程序的服务器在部署后保持不变。 如果应用程序需要更多计算资源,则旧服务器将被丢弃,并将应用程序迁移到新的高性能服务器。 通过避免手动升级,不可变的基础设施使云原生部署成为一个可预测的过程。

(2)微服务 Microservices
微服务是小型、独立的软件组件,它们共同作为完整的云原生软件运行。 每个微服务都专注于一个小的具体问题。 微服务是松散耦合的,这意味着它们是相互通信的独立软件组件。 开发人员通过处理各个微服务来对应用程序进行更改。 这样,即使一个微服务发生故障,应用程序也可以继续运行。

(3)应用程序编程接口 API
应用程序编程接口(API)是两个或多个软件程序用来交换信息的方法。 云原生系统使用 API 将松散耦合的微服务整合在一起。 API 告诉您微服务需要什么数据以及它可以为您提供什么结果,而不是指定实现结果的步骤。

(4)服务网格 Service Mech
服务网格是云基础设施中的一个软件层,用于管理多个微服务之间的通信。 开发人员使用服务网格引入附加功能,而无需在应用程序中编写新代码。

(5)容器

容器是云原生应用程序中最小的计算单元。 它们是打包云原生系统中的微服务代码和其他所需文件的软件组件。 通过容器化微服务,云原生应用程序独立于底层操作系统和硬件运行。 这意味着软件开发人员可以在本地、云基础设施或混合云上部署云原生应用程序。 开发人员使用容器来打包微服务及其各自的依赖项,例如主应用程序运行所需的资源文件、库和脚本。

7. 什么是云原生应用程序开发?
云原生应用程序开发描述了开发人员如何以及在何处构建和部署云原生应用程序。 文化转变对于云原生开发非常重要。 开发人员采用特定的软件实践来缩短软件交付时间并提供准确的功能来满足不断变化的用户期望。 下面我们给出了一些常见的云原生开发实践。

(1)持续集成 - CI (Continuous Integration)
持续集成 (CI) 是一种软件实践,开发人员可以频繁且无错误地将更改集成到共享代码库中。 频繁的小更改可以提高开发效率,因为您可以更快地识别和解决问题。 CI 工具会自动评估每次更改的代码质量,以便开发团队可以更有信心地添加新功能。

(2)持续交付 - CD (Continuous Delivery)
持续交付(CD)是一种支持云原生开发的软件实践。 通过 CD,开发团队可确保微服务始终准备好部署到云中。 他们使用软件自动化工具来降低进行更改时的风险,例如引入新功能和修复应用程序中的错误。 CI 和 CD 协同工作以实现高效的软件交付。

(3)DevOps
DevOps 是一种改善开发和运营团队协作的软件文化。 这是一种与云原生模型相一致的设计理念。 DevOps 实践使组织能够加快软件开发生命周期。 开发人员和运维工程师使用DevOps工具来自动化云原生开发。

(3)Serverless
Serverless计算是一种云原生模型,其中云提供商完全管理底层服务器基础设施。 开发人员使用无服务器计算,因为云基础设施会自动扩展和配置以满足应用程序要求。 开发人员只需为应用程序使用的资源付费。 当应用程序停止运行时,无服务器架构会自动删除计算资源。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据链路层是如何传递数据的

数据链路层是如何传递数据的 数据链路层功能概述封装成帧透明传输差错控制 数据链路层功能概述 数据链路层的主要作用就是加强物理层传输原始比特流的功能。其负责将物理层提供的可能出错的物理连接,改造成逻辑上无差错的数据链路。 数据链路层包括三个基本问题&a…

Matlab的SimuLink对FS32K144编程--SPI通讯控制12bitDAC输出

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ 1、硬件介绍,DAC芯片:AD5328BRUZ DAC_SPI_SCK----PTD0(SPI1) DAC_SPI_DIN----PTE0(SPI1)单片…

【Vuvuzela 声音去噪算法】基于流行的频谱减法技术的声音去噪算法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

[BSidesCF 2020]Had a bad day1

进入环境,一上来就是一段激励的话,没有啥特别的,源码中也没有看见啥有用的提示 但主要是有,参数的传递,加上前面的index.php,想到了PHP伪协议,或许我们可以直接查看一下隐藏源码 报错了&#xf…

【Linux进程】进程控制(下) {进程程序替换:程序替换的工作原理,程序替换函数exec*,简单的命令行解释器}

四、进程程序替换 之前用fork创建子进程后,父子进程执行同一个程序的不同代码段。 如何使子进程执行另一个不同的程序呢?子进程需要进行程序替换! 程序替换,就是通过特定的接口,将磁盘上一个全新的程序(包…

OBS 迁移--华为云

一、创建迁移i任务 1. 登录管理控制台。 2. 单击管理控制台左上角的 在下拉框中选择区域。 3. 单击“ 服务列表 ”,选择“ 迁移 > 对象存储迁移服务 OMS ”,进入“ 对象存储迁移服务 ”页面。 4. 单击页面右上角“ 创建迁移任务 ”。 5. 仔细阅读…

Verilog语法学习——LV4_移位运算与乘法

LV4_移位运算与乘法 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 题目描述: 已知d为一个8位数,请在每个时钟周期分别输出该数乘1/…

Python爬取IP归属地信息及各个地区天气信息

一、实现样式 二、核心点 1、语言:Python、HTML,CSS 2、python web框架 Flask 3、三方库:requests、xpath 4、爬取网站:https://ip138.com/ 5、文档结构 三、代码 ipquery.py import requests from lxml import etree # 请求…

了解Unity编辑器之组件篇Miscellaneous(九)

一、Aim Constraint:是一种动画约束,用于使一个对象朝向另一个对象或一个指定的矢量方向 Activate按钮:用于激活或停用Aim Constraint。当Aim Constraint处于激活状态时,其约束效果将应用于目标对象。 Zero按钮:用于将…

Spring Boot单元测试入门指南

Spring Boot单元测试入门指南 JUnit是一个成熟和广泛应用的Java单元测试框架,它提供了丰富的功能和灵活的扩展机制,可以帮助开发人员编写高质量的单元测试。通过JUnit,开发人员可以更加自信地进行重构、维护和改进代码,同时提高代…

Skin Shader 使用自动生成的Thickness

Unity2023.2的版本,Thickness 自动化生成,今天测试了一把,确实不错。 1.Render 设置 在Project Settings->Graphics->HDRP Global Settings中 Frame Setting->Rendering->Compute Thickness 打开 2.Layer设置 2.1添加Layer&…

如何提高自己的软件测试水平之bug定位

同学们在面试投简历的时候会经常看到人家公司JD上写的要求之一,如下: 这句话大家不要以为随便写写的,在我工作的十几年过程中起码见过10个以上试用期没过的公司新人,公司在衡量一个测试工程师是否专业的标准之一就是:…

Kotlin基础(八):泛型

前言 本文主要讲解kotlin泛型,主要包括泛型基础,类型变异,类型投射,星号投射,泛型函数,泛型约束,泛型在Android中的使用。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 泛型基…

opencv-28 自适应阈值处理-cv2.adaptiveThreshold()

什么是自适应阈值处理? 对于色彩均衡的图像,直接使用一个阈值就能完成对图像的阈值化处理。但是,有时图像的色彩是不均衡的,此时如果只使用一个阈值,就无法得到清晰有效的阈值分割结果图像。 有一种改进的阈值处理技术&#xff…

Mybatis-Plus学习笔记,包含mybatis-plus基本使用,各种插件使用等等

😀😀😀创作不易,各位看官点赞收藏. 文章目录 Mybatis-Plus笔记1、简介2、Mybatis-Plus Demo 程序3、Mybatis-Plus 常见注解4、Mybatis-Plus 条件构造器 Wrapper5、Mybatis-Plus 插件5.1、乐观锁插件5.2、分页插件5.3、逻辑删除插件…

OJ练习第145题——并行课程 III

力扣链接:2050. 并行课程 III 题目描述 给你一个整数 n ,表示有 n 节课,课程编号从 1 到 n 。同时给你一个二维整数数组 relations ,其中 relations[j] [prevCoursej, nextCoursej] ,表示课程 prevCoursej 必须在课…

Python(四十七)列表对象的创建

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

脚手架(vue-cli)的安装详细教程

首先要下载node.js 下载 | Node.js 中文网 (nodejs.cn)https://nodejs.cn/download/ 大家根据自己的系统来选择哪个,我是Windows系统,所以选择红色箭头所指的安装包去安装!!! 接下来双击安装!!…

面试之CurrentHashMap的底层原理

首先回答HashMap的底层原理? HashMap是数组链表组成。数字组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。要将key 存储到(put)HashMap中,key类型实现必须计算hashcode方法,默认这个方法是对象的地址。接…

【深度学习笔记】Softmax 回归

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记,视频由网易云课堂与 deeplearning.ai 联合出品,主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习,视频的链接如下: 神经网络和…