写点什么

云原生应用的 10 大关键属性

  • 2020-04-15
  • 本文字数:1855 字

    阅读完需:约 6 分钟

云原生应用的10大关键属性

“云原生(Cloud Native)”是用于描述基于容器的环境的术语。云原生技术被用于开发应用程序,这些应用程序是使用容器打包的服务构建的、被部署为微服务、并通过灵活的 DevOps 流程和持续交付工作流在弹性基础架构上进行管理。



在运维团队手动管理传统应用程序的基础架构资源分配的情况下,云原生应用程序部署在抽象了底层计算、存储和网络原语的基础架构上。处理这种新型应用程序的开发人员和运维人员不直接与基础架构提供商公开的 API 交互。相反的,编排器会根据 DevOps 团队制定的策略自动进行资源分配。控制器和调度程序是编排引擎的基本组件,负责处理资源分配问题和应用程序的生命周期。


像 Kubernetes 这样的云原生平台使用扁平网络,该网络覆盖在云提供商的现有网络拓扑和原语上。类似地,本地存储层通常被抽象出来,以暴露与容器集成的逻辑卷。运维人员可以分配开发人员和资源管理员访问的存储配额和网络策略。基础架构抽象不仅解决了跨云环境的可移植性需求,还让开发人员可以利用新兴模式来构建和部署应用程序。无论基于物理服务器或虚拟机,私有云或公共云的底层基础架构如何,编排管理器都将成为部署目标。


Kubernetes 是一个运行云原生应用程序工作负载的理想平台。它已经成为云的事实上的操作系统,就像 Linux 是底层机器的操作系统一样。只要开发人员在设计和开发软件时,遵循其作为云原生应用程序的微服务的最佳实践,DevOps 团队就能够在 Kubernetes 中打包和部署它们。以下是开发人员在设计云原生应用程序时应牢记的云原生应用程序的 10 个关键属性。



1、打包为轻量级容器:云原生应用程序是打包为轻量级容器的独立自治服务的集合。与虚拟机不同,容器可以快速扩缩容。将扩展单元转移到容器,能够优化基础架构利用率。


2、使用最佳语言和框架开发 :云原生应用程序的每项服务都是使用最适合该功能的语言和框架开发的。云原生应用程序是多语言的,服务会使用各种不同的语言、运行时和框架。例如,开发人员可以构建基于在 Node.js 中开发的 WebSockets 的实时流服务,同时选择 Python 和 Flask 来暴露 API。开发微服务的细粒度方法使它们能够为特定任务选择最佳语言和框架。


3、设计为松耦合的微服务 :属于同一应用程序的服务通过应用程序运行时来发现彼此。它们独立于其他服务而存在。正确集成时,弹性基础架构和应用程序架构可以高效地、以高性能来进行扩展。


松耦合的服务让开发人员可以在处理每个服务时都能够独立于其他服务来工作。通过这种分离,开发人员可以专注于每项服务的核心功能,以提供细粒度的功能。这种方法可以实现整个应用程序的有效生命周期管理,因为每个服务都是独立维护的,并且拥有明确的所有权。


4、以 API 为中心进行交互和协作 :云原生服务使用轻量级 API,这些 API 基于 REST、gRPC 或 NATS 等协议。REST 通常被用作通过 HTTP 公开 API 的最低公分母。为了提高性能,gRPC 通常用于服务之间的内部通信。NATS 具有发布-订阅功能,可在应用程序内实现异步通信。


5、在架构中将无状态和有状态服务清晰分离 :持久耐用的服务通常遵循不同的模式,以确保更高的可用性和弹性。无状态服务和有状态服务是彼此独立存在的。存储会影响容器的使用。我们必须越来越多地在有状态、无状态、微存储环境(这一点有些人可能觉得有争议)等不同语境下考虑持久性这一因素。


6、与服务器和操作系统依赖关系隔离 :云原生应用程序与任何特定操作系统或单个计算机没有关联。它们在更高的抽象级别上运行。唯一的例外是微服务需要某些功能,包括固态驱动器(SSD)和图形处理单元(GPU),这些功能可能由一部分机器专门提供。


7、部署在自服务的弹性云基础架构上 :云原生应用程序部署在虚拟的、共享的和弹性的基础架构上。它们可以与底层基础架构保持一致,以动态增长和缩小——根据不同的负载来自我调节。


8、通过敏捷 DevOps 流程进行管理 :云原生应用程序的每项服务都会经历一个独立的生命周期,通过敏捷的 DevOps 流程进行管理。多个持续集成/持续交付(CI / CD)流水线可以协同工作以部署和管理云原生应用程序。


9、自动化功能 :云原生应用程序可以高度自动化。它们与 Infrastructure as Code 的概念相得益彰。企业需要一定程度的自动化来管理大型和复杂的应用程序。


10、定义的、策略驱动的资源分配 :最后,云原生应用程序与通过一组策略定义的治理模型一致。它们遵循 CPU 和存储配额以及将资源分配给服务的网络策略等策略。例如,在企业方案中,中央 IT 可以定义策略来为每个部门分配资源。每个部门的开发人员和 DevOps 团队都拥有对其资源共享的完全访问权和所有权。


2020-04-15 23:04844

评论

发布
暂无评论
发现更多内容

使用 apache 给前后端服务做反向代理

非晓为骁

Apache 反向代理

作为资深Mac用户,有哪些你相见恨晚的软件值得推荐?

Jackpop

如虎添翼!微软OneNote迎来新利器!

Jackpop

深扒:基于UEBA的数据使用安全防护

极盾科技

SQL Sever 提供的数字类型

乔乔

数据库 11月月更 SQL sever

九科信息荣获《2022爱分析RPA厂商全景报告》RPA软件市场代表厂商

九科Ninetech

NB的Github项目,看到最后一个我惊呆了!

艾小仙

Java GitHub

云原生训练营课程总结

Rex

hadoop2.7集群初始化之后没有DataNode的问题

程序员欣宸

大数据 hadoop 11月月更

华为发布鸿蒙开发套件 全面加速推进鸿蒙生态

科技汇

HNCTF--Misc部分题解

我是一个茶壶

11月月更 杂项 HNCTF

2022-11-04:给定一个正数n,表示有多少个节点 给定一个二维数组edges,表示所有无向边 edges[i] = {a, b} 表示a到b有一条无向边 edges一定表示的是一个无环无向图,也

福大大架构师每日一题

算法 rust 福大大

JAVA中如何实现代码优化(技巧讲解)

叶秋学长

Java 优化 技巧总结 11月月更

前行不缀 未来可期,鸿蒙生态发展迈入全新阶段

OpenHarmony开发者

OpenHarmony

全新升级的鸿蒙开发套件,你想知道的都在这里

HarmonyOS开发者

HarmonyOS

网络安全必学SQL注入

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

工赋开发者社区 | 研究了代码质量后,开发速度提高了 2 倍,bug 减少了 15 倍

工赋开发者社区

应用防火墙WAF架构分类

阿泽🧸

waf 11月月更

华为高清空间音频将登陆座舱,打造移动“车载大剧院”

最新动态

产品负责人的轻度思考,6个小策略,面对迭代Sprint评审会

老彦

敏捷 回顾会 产品负责人

卷积模型分类图片

芯动大师

Python 卷积网络 11月月更

【C语言】case 关键字

謓泽

11月月更

华为阅读“WebBrain搜索”和“知识图谱”在HDC2022首次亮相!

叶落便知秋

阿里低代码引擎怎么样,好不好用?

优秀

低代码

如何通俗易懂理解Python类和面向对象?

Jackpop

Vue组合式函数(一)

Augus

vue.js 11月月更

工赋开发者社区 | SPL工业智能:发现时序数据的异常

工赋开发者社区

新一代 CI 即将到来!

CODING DevOps

ci 持续集成 jenkins

docker 部署 apache 做反向代理

非晓为骁

Apache Docker 反向代理

Mac上有那些你认为极其好用的app?

Jackpop

独有且优质!这些Mac软件绝了!

Jackpop

云原生应用的10大关键属性_文化 & 方法_Rancher_InfoQ精选文章