写点什么

云原生应用的 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:04945

评论

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

静态代码分析工具评估指标及方法

maijun

几种常见的研发管理体系,哪种更适合你?

菜根老谭

敏捷开发 研发管理 CMMI IPD

建信金科大咖访谈:金融衍生品定价与建行实践

金科优源汇

金融科技 金融创新

Java中多线程安全问题实例分析

叫练

Java 多线程 什么是多线程 多线程与高并发

住建部等六部门:广泛运用区块链等技术,建设智慧物业管理服务平台

CECBC

物业生活

浅谈JDK并发包下面的分治思想及分治思想在高并发场景的运用

AI乔治

Java 架构 jdk 分布式 多线程与高并发

自建本地电话告警系统

周楠

运维 物联网 监控告警

告别消费主义的双12,是华为云12.12会员节真正的意义

脑极体

太赞了!滴滴开源了一套分布式ID的生成系统...

Java架构师迁哥

搭建网站/APP最全准备攻略

前嗅大数据

小程序 建站 APP发布

第十三周学习总结

饭桶

信任的传递——为什么我们需要第三方授权?

张凯峰

证书 身份认证

Elasticsearch 新机型发布,性能提升30%

腾讯云大数据

大数据 elasticsearch Elastic Stack

即构实时音视频多中心调度设计

ZEGO即构

EMAS远程日志 - 移动端问题排查利器

移动研发平台EMAS

阿里云 运维 日志 监控告警 应用

Shell脚本命令常用技巧

MySQL从删库到跑路

shell脚本编写

面向全场景模块化设计 京东智联云的服务器部署有多灵活?

京东科技开发者

服务器 云主机

如何在数智化时代少走弯路? 这里有100个案例可以借鉴

京东科技开发者

DevOps 云原生

大咖直播 | Elasticsearch 应用监控管理平台搭建实战

腾讯云大数据

大数据 elasticsearch Elastic Stack 监控管理平台

第13周作业

饭桶

AWS 助力贝壳VR看房走出国门,升级全球居住服务新体验

亚马逊云科技 (Amazon Web Services)

AWS

互联网应用系统常见问题与方案

raox

极客大学架构师训练营

这才是你需要的C/C++Linux学习路线!

赖猫

c++ Linux 后台开发 服务器开发

牵头成立“现代计算联盟”,强大如谷歌也需要组团打怪吗?

脑极体

传统巨头抢占区块链场景高地 医疗、汽车、金融成为热门赛道

CECBC

区块链 金融

记一次MapReduce的内存溢出

AI乔治

Java mapreduce 架构 内存溢出

Apache顶级项目ShardingSphere — SQL Parser的设计与实现

京东数科风险算法与技术

数据库 开源 中间件

云南区块链电子发票全面推广啦!

CECBC

区块链 纳税人

附PPT丨AI和云原生时代的数据库进化之路

dbaplus社群

数据库 云原生

云原生架构-可观测性之 Prometheus 服务自动发现

云原生实验室

图文回顾丨北京「解构云原生:企业数字化转型新支点」沙龙

Rancher

k8s rancher

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