基础概念回顾:云原生应用交付

2023-09-20 17:31:58

原文链接:基础概念回顾:云原生应用交付

转载来源:NGINX 开源社区

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn


尽管云原生应用开发诞生于 21 世纪初,但是在术语使用方面还是非常混乱。本文将带您了解常见的术语和问题。

云原生

云原生计算基金会 (CNCF) 对“云原生”的定义如下:

云原生技术允许企业在公有云、私有云和混合云等现代动态环境中构建和运行可扩展的应用。云原生的代表技术包括容器、service mesh、微服务、不可变基础架构和声明式 API。

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

云负载均衡

云负载均衡是指将客户端请求分发到在云环境中运行的多个应用服务器。与其他形式的负载均衡一样,云负载均衡能够最大限度地提高应用的性能和可靠性;相比本地资源的传统负载均衡,其优势(通常)是成本更低,并可以轻松地根据需求来扩展或收缩应用。

如今,越来越多的企业(尤其是小型企业)都在云中运行各种应用。企业可能会使用基于云的 CRM(如 Salesforce.com)存储客户信息,使用基于云的 ERP 系统跟踪产品数据,使用网络托管厂商(如 Google)托管网站,并使用 Amazon Elastic Compute Cloud (EC2) 运行少量定制的应用。

推荐的作法是将负载均衡器服务器与所负载均衡的资源部署在同一环境中。因此,当某个公司的大部分计算基础架构都托管在云中时,在云中运行负载均衡器也是很有必要的。

云负载均衡的优势主要体现在云本身的可扩展性和全局性上。

  • 在云端扩展的便捷性和速度意味着,企业只需在一组应用实例前放置一个可根据需求快速自动扩展的云负载均衡器,即可轻松处理流量峰值(如“双十一”的流量),并且不会降低性能。

  • 在全球多个云中心托管应用的能力还可以提高可靠性。举例来说,如果美国东北部在遭受暴风雪袭击后发生停电,云负载均衡器可以将流量从该地区托管的云资源引导到在该国其他地区托管的资源。

多云与混合云

“多云”和“混合云”通常用作同义词,但实际上两者是有区别的。

多云基础架构跨越来自不同提供商的多个公有云环境。在多云基础架构中,不同的公有云通常用于执行不同的任务(例如,一个用于程序逻辑,第二个用于数据库,第三个用于机器学习),而且跨云分布可能因应用而异。企业选择多云策略,是为了利用各种云的灵活性和特性。

混合云基础架构包括两个或多个不同类型的云环境(本地、私有云和公有云)。在混合云基础架构中,公有云的作用是扩展私有云或本地环境的功能。正在将应用迁移到云或因技术债过多而无法全面实现云原生的企业,通常会采用此方法。混合云基础架构通常包括多个公有云,因此结合了混合云和多云。

容器

容器是一种虚拟化技术,旨在为应用创造可移植性并支持这种可移植—— 换句话说,是为了在各种不同的平台上都能轻松地部署应用。容器可以将应用的所有需求(应用代码本身、应用的依赖项(比如需要运行的库等),以及应用及其依赖项的运行时环境)打包到一个可跨平台传输和独立运行的包中。容器是一个应用从其典型的操作系统运行时环境中的抽象(abstraction)。

Docker 是最有名的容器实现格式;此外,还有其他容器技术(例如 rkt/CoreOS、containerd、Hyper - V 容器)以及较低级别的技术(例如 cgroups 和 namespaces,这两种技术都用于应用隔离,类似于容器引擎,但不像容器那样提供隔离的可移植性)。您可以使用 Docker 或 rkt 等平台工具直接管理容器,但大多数部署都使用编排工具(如Kubernetes)管理容器。Kubernetes 已逐渐成为了默认的生产级容器部署的标准工具。

更多容器等相关的内容访问NGINX开源社区查看更多。

微服务

微服务是一种利用多个小组件(每个组件执行单个功能,例如身份验证、通知或支付流程)构建大型复杂应用的软件架构方法,亦指这些小组件本身。每个微服务都是软件开发项目中的一个独立单元,具有自己的代码库、基础架构和数据库。微服务协同工作,通过 Web API 或消息队列进行通信,以对传入事件作出响应。

在《构建微服务》一书中,Sam Newman 简单明了地将微服务定义为“协同工作的小型自主服务”——这个定义包含了微服务的三个要素。

微服务的代码库很“小”,因为它专注于一项功能;“小规模”意味着单个开发人员或小型团队即可创建并维护代码。

“自主”意味着微服务可按需部署和扩展,当微服务内部发生变化时,无需咨询负责其他微服务的团队。

这之所以成为可能,是因为当微服务“协同工作”时,它们通过明确定义的 API 或不会暴露微服务内部工作原理的类似机制进行通信。

更多有关“微服务”的基础概念,请阅读我们的文章《一文了解微服务》

Ingress controller (Ingress 控制器)

Ingress controller (Ingress 控制器)是面向 Kubernetes(及其他容器化)环境的专用负载均衡器。Kubernetes 是容器化应用管理的事实标准。

对许多企业而言,将生产工作负载迁移到 Kubernetes 会增加应用流量管理方面的挑战和复杂性。Ingress controller 能够将 Kubernetes 应用流量路由的复杂性抽象出来,并在 Kubernetes 服务和外部服务之间建立了一座桥梁。

Kubernetes Ingress Controller 的功能如下:

  • 接受来自 Kubernetes 平台外部的流量,并将其负载均衡到 Kubernetes 平台内部运行的 pod(容器)

  • 可管理集群内需要与集群外其他服务通信的服务的出向流量

  • 使用 Kubernetes API 进行配置,以部署名为“Ingress 资源”的对象

  • 监控 Kubernetes 中运行的 pod,并在服务添加或删除 pod 后自动更新负载均衡规则

Service Mesh(服务网格)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 根据 The New Stack 的定义,service mesh 是一种旨在“提高分布式系统的安全性、可观测性及流量控制”的技术。更具体地说,service mesh 是一种像 Kubernetes 这样的容器化环境编排工具的组件。

它通常负责一系列功能,包括在容器化应用之间路由流量,用作定义自动的 service 到 service 的双向 TLS (mTLS) 策略和实施这些策略的接口,并让应用的可用性和安全性变得可视化。与 Kubernetes 的整体状况一样,service mesh 也是由控制平面、管理平面及数据平面组成。

Service mesh 通常以一种对容器化应用透明的方式处理流量管理和安全防护。通过 SSL/TLS 卸载、负载均衡 等功能,service mesh 能够使开发人员无需在每个应用中都单独实现安全性或服务可用性。企业级的 service mesh 为各种“难题”提供了解决方案:

  • 使用端到端加密和 mTLS 保护流量

  • 通过注入管理、sidecar 管理及 Kubernetes API 集成进行编排

  • 管理服务流量,包括负载均衡、流量控制(速率限制和断路)及流量整形(灰度部署、A/B 测试、蓝绿部署)

  • 使用 Prometheus 和 Grafana 等热门工具增强对 service 到 service 流量的监控和可视化

  • 通过原生集成的 Ingress controller(Ingress 控制器),简化 Kubernetes 出入向流量管理

Service mesh 可以很小,专注于某项特定功能;它也可以很大,包含一套全面的网络和集群管理工具(例如 Istio);它也可以是介于两者之间的任何形态。Service mesh 越大越复杂,独立的管理平面就越有用。


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号

更多推荐

微信小程序——生命周期详解(代码解读)

✅作者简介:2022年博客新星第八。热爱国学的Java后端开发者,修心和技术同步精进。🍎个人主页:JavaFans的博客🍊个人信条:不迁怒,不贰过。小知识,大智慧。💞当前专栏:微信小程序学习分享✨特色专栏:国学周更-心性养成之路🥭本文内容:微信小程序——使用Vant组件实现Popup弹出层(各位置弹出详细代码分

卷积神经网络(一)

文章目录前言卷积层多通道池化层代码前言从外行者角度看卷积神经网络会说无非就是卷积层后面跟着一个池化层,但是深入代码实际编写卷积神经网络总是有些困难的。其中包括各种细节比如数据格式、尺寸变化、运算规定等。参考:{{Citejournal|last1=Zhang|first1=Aston|last2=Lipton|firs

tcp_v4_connect函数的解析

源码:inttcp_v4_connect(structsock*sk,structsockaddr*uaddr,intaddr_len){//解析输入的地址结构structsockaddr_in*usin=(structsockaddr_in*)uaddr;//获取TCP协议栈的全局death_row对象structi

STM32H5开发(5)----串口打印配置

STM32H5开发----4.开发板介绍概述样品申请硬件准备生成例程配置调试口代码生成配置项目配置调试配置串口重定向打印测试结果概述在使用STM32CUBEIDE开发STM32H5项目时,串口打印被证明是一项极其有益的调试工具,能够在开发过程中实时输出信息和调试数据,起到了至关重要的作用。通过充分利用串口打印功能,开发

Netty面试题(一)

文章目录前言一、BIO、NIO和AIO的区别?二、NIO的组成?三、Netty的特点?总结前言BIO、NIO和AIO的区别?NIO的组成?Netty的特点?一、BIO、NIO和AIO的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步IO:将请求连接放入线程池,一对

从零学算法(剑指 Offer 33)

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树:5/\26/\13示例1:输入:[1,6,3,2,5]输出:false示例2:输入:[1,3,2,6,5]输出:true我的思路:二叉搜索树就是左节点都

DS相关题目

DS相关题目题目一:消失的数字拿到这道题目之后,首先可以想到的一个解题方法就是,我们可以先排序,排完序之后,这个数组其实就是一个有序的数组了,那只用比较数组中的每一个元素和他对应的下标是不是相等的,如果是相等的,那么就说明对应的数字其实是存在的,如果是不相等的,那么就说明对应的数字其实就是不存在的了,但是如果要排序的话

GIS前端-地图操作与交互

GIS地图操作与交互地图操作与交互基本原理Leaflet提供的事件缩放控件常用的基础功能通常是一个应用系统所必需的,如地图的缩放、导航、定位、弹出框等,它让一张静态的地图动起来,让地图承载更多的空间信息,并以友好的交互方式呈现给用户。例如,一个大众应用的旅游GIS系统,如果仅仅在Web端显示一张地图,那么这时只能看到一

用户案例|Shopee 在多媒体理解业务的向量检索系统实践

Shopee是一家全球性的电商平台,业务范围辐射东南亚、拉美等多个地区。多媒体理解(MultimediaUnderstanding,下文简称MMU)团队是Shopee内专注于提供多媒体内容理解服务的团队,为电商、直播、短视频等业务提供支持。MMU团队需要支持公司不同业务场景对多媒体理解的需求。以向量检索为例,可能会有如

React 简介

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录ComponentJSXMultiplecomponentsprops:passingdatatocomponentsSomenotes我们现在将开始入门的可能是本课程最重要的主题,即React-库。让我们从制

ArmSom-W3开发板之PCIE的开发指南(一)

1.简介RK3588从入门到精通本⽂介绍RK平台配置pcie的方法开发板:ArmSoM-W32、PCIE接口概述PCIe(PeripheralComponentInterconnectExpress)是一种用于连接计算机内部组件的高速接口标准。以下是关于PCIe接口的简要介绍:高速传输:PCIe接口提供了高速的数据传输

热文推荐