写点什么

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

评论

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

海外多语言数字货币交易app系统开发搭建

开发微hkkf5566

七年的开源商业化探索,PingCAP 为什么选了这样一条路?

TiDB 社区干货传送门

数据库前沿趋势

TiKV RocksDB读写原理整理

TiDB 社区干货传送门

TiDB 底层架构 TiKV 底层架构

PingCAP黄东旭:Serverless是数据库的未来形态

TiDB 社区干货传送门

数据库前沿趋势

从零开始学习BOM&DOM

虎妞先生

前端 DOM

大型集团企业数据治理实践,推进全域数据资产体系建设 | 数字化标杆

袋鼠云数栈

java核心技术-多线程基础

蓦然

Spring Java

云数据库 TiDB 体验——部分故障问题与解决方法

TiDB 社区干货传送门

版本测评 新版本/特性解读 6.x 实践

云安全之浅谈密钥泄露

HummerCloud

云安全 密钥

辞旧岁立新年 | 展望前端工程师的2023

字节跳动终端技术

云原生 前端 前端工程师

软件测试/测试开发 | App自动化之dom结构和元素定位方式(包含滑动列表定位)

测试人

软件测试 自动化测试 测试开发

云原生场景下,如何缓减容器隔离漏洞,监控内核关键路径?

OpenCloudOS

Linux 云原生 服务器

架构实战营第 10 期 - 模块六:拆分电商为微服务

kaizen

「架构实战营」

Apipost如何快速生成并分享API实时文档

popo223344

后端

谈谈干前端三年的几点感受

虎妞先生

前端 成长 代码人生

# 文盘Rust -- rust 连接云上数仓 starwift

TiDB 社区干货传送门

开发语言

br备份时排除某个库

TiDB 社区干货传送门

实践案例 备份 & 恢复

【2.3-2.10】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

模型推理耗时降低98%!PaddleTS又双叒叕带来重磅升级!

飞桨PaddlePaddle

paddle

在线研讨会邀请 | 赋能“大”研发,助力“快”交付

龙智—DevSecOps解决方案

版本控制 线上研讨会 研讨会 数字资产管理

【SOP】新扩容节点与集群版本不一致处理

TiDB 社区干货传送门

实践案例 版本升级 管理与运维 故障排查/诊断 扩/缩容

C++到Python全搞定,教你如何为FastDeploy贡献代码

飞桨PaddlePaddle

c++ paddle 飞桨

前端包管理工具 npm yarn cnpm npx

虎妞先生

前端 包管理工具 #面试

不常用但却常问的迭代器

虎妞先生

前端 ES6

微信小程序底层框架实现原理|万字长文

虎妞先生

微信小程序 前端 原理 架构、

神锁离线版和Bitwarden的自动填充:超级英雄 vs 被斗转星移的瞎鸟

神锁离线版

密码管理 密码管理器 密码安全 Bitwarden 神锁离线版

云数据库 TiDB试用

TiDB 社区干货传送门

MASA Stack 1.0 发布会讲稿——实践篇

MASA技术团队

.net MASA MAUI MASA Stack

迈铸半导体完成1500万Pre A+轮融资,用于实现规模化量产

硬科技星球

云数据库 TiDB 试用实践——部署&运维

TiDB 社区干货传送门

版本测评

2023最好用的10个开发者工具!每一个都让你效率翻倍

popo223344

工具 测试 后端

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