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

news2024/11/17 15:38:23

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

转载来源: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 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像处理领域之►边缘检测大合集◄【应该是全网仅有的了吧】

图像处理领域之►边缘检测‧大合集◄ 概述 {\color{Brown}概述} 概述 数据集 {\color{Purple}数据集} 数据集 实践 {\color{Red}实践} 实践 深度学习方法 {\color{Blue} 深度学习方法} 深度学习方法 机器学习方法 {\color{Blue} 机器学习方法} 机器学习方法 基于传统方法 {\col…

如何隐藏或修改Docker容器中的Nginx响应头中的Server

背景介绍 现在大部分项目通过Nginx作为反向代理,实际由于安全审计要求需要隐藏或修改响应头的Server信息,传统的项目直接部署在nginx服务器中,只需要在nginx服务器安装ngx_http_headers_more_filter_module插件,然后通过修改ngin…

Linux服务器占用处理手记

磁盘占用定位处理 查看磁盘占用情况: df -h 查看每个目录的占用情况: du -h -x --max-depth1 查找大文件和目录 du -sh /* du -sh /home/* 可参考: Linux垃圾清理指北_linux 清理垃圾_智商二五零_的博客-CSDN博客 查看CPU和内存占用情…

SpringBoot底层原理----配置优先级/Bean管理/springboot原理

配置优先级 最终得到以下配置优先级:(从低到高) Bean管理 获取bean bean作用域 第三方bean Springboot原理 起步依赖 原理就是依赖传递-通过引入web依赖将所有必要的都同时引入 自动配置--面试高频题目 即:在pom文件中引入依赖后,他是如何自动配置给IOC容器的 springboot采…

Xilinx SDK编译完成自动生成SREC文件(适用于ISE、Vivado、Vitis)

把elf转换成srec格式的常规方式,是打开Program Flash Memory界面,选择elf文件,点击Convert ELF to SREC 会在hardware目录下的cache文件夹下生产srec文件。 可以通过配置编译后执行命令,在每次编译完成自动生产srec文件。 会在…

安卓备份基带分区 备份字库 步骤解析 以免误檫除分区或者“格机” 后悔莫及

玩机搞机---安卓机型mtk和高通芯片查看分区 导出分区 备份分区的一些工具分析 修复基带 改串码 基带qcn 改相关参数 格机危害 手机基带的重要性前面几期博文我都有相关的说明。他区别于别的分区。而且目前手机的安全性越来越高。基带分区基本都是专机专用。而不像早期机型一…

小皮面板配置Xdebug,调用单个php文件

小皮面板配置Xdebug 首先下载phpstrom,和小皮面板 打开小皮面板,选中好要使用的php版本 然后点击【管理】> 【php扩展】> 【xdebug】 然后打开选中好版本的php位置 D:\Program_Files\phpstudy_pro\Extensions\php\php7.4.3nts打开php.ini文件…

【数据结构】—从直接插入排序升级到希尔排序究极详解(含C语言实现)

食用指南:本文在有C基础的情况下食用更佳 🔥这就不得不推荐此专栏了:C语言 ♈️今日夜电波:透明で透き通って何にでもなれそうで—HaKU 2:05 ━━━━━━️💟──────── 5:38 …

干货分享 | 关于同星硬件接口卡及TSMaster软件常见问题QA指南

TSMaster是同星智能开发的一款国产汽车总线工具链软件平台,是全方位汽车总线设计、仿真、分析、诊断和标定的专业工具,支持从需求分析到系统实现的整个系统开发过程。同星智能硬件接口卡可以提供CAN, CAN FD, LIN, FlexRay, 与Ethernet等网络的开发、仿真…

李宏毅-hw7-利用Bert完成QA

一、查漏补缺、熟能生巧: 只有熬过不熟练的时期,反复琢磨,才会有熟练之后,藐视众生的时刻 1.关于transformers中的tokenizer的用法的简单介绍: from transformers import BertTokenizerFast# 加载预训练的BERT模型to…

uniapp Echart X轴Y轴文字被遮挡怎么办,或未能铺满整个容器

有时候布局太小,使用echarts,x轴y轴文字容易被遮挡,怎么解决这个问题呢,或者是未能铺满整个容器。 方法1: 直接设置 containLabel 字段 options: { grid: { containLabel: true, },} 方法2: 间接设置,但是…

微信小程序页面栈超出导致页面卡死

微信小程序页面栈不能超出10个 超出10个之后无法进行点击选择跳转 解决方法: 跳转的时候,判断之前页面栈里是否存在要跳转的页面, 如果存在之前页面,就navigateBack返回之前页面, 如果不存在之前页面,判断…

RocketMQ 核心编程模型以及生产环境最佳实践

文章目录 1、RocketMQ的消息模型2、深入理解RocketMQ的消息模型2.1、RocketMQ客户端基本流程2.2、消息确认机制2.2.1、 发送消息的方式第一种称为单向发送第二种称为同步发送第三种称为异步发送 2.2.2、状态确认机制2.2.3、消费者也可以自行指定起始消费位点 2.3、广播消息2.4、…

nginx 报错[emerg]: unknown directive “锘? in E:\nginx-1.18.0/conf/nginx.conf:3

报错:nginx 报错[emerg] 32408#14080: unknown directive "锘? in E:\nginx-1.18.0/conf/nginx.conf:3 原因:使用nginx服务时,用txt记事本打开编辑了nginx.conf文件,类似WINDOWS自带的记事本等软件,在保存一个以…

mysql触发器triggers

文章目录 1、创建触发器2、 查看触发器3、删除触发器 1、创建触发器 语法: CREATE TRIGGER 触发器名称 BEFORE/AFTER INSERT/UPDATE/DELETE ON 表名 FOR EACH ROW BEGIN SQL逻辑 END;BEFORE 或 AFTER 表示之前 还是 之后触发 INSERT 或 UPDATE 或 DELETE 表示监听…

PostgreSQL 查询某个属性相同内容出现的次数

查询某个数据库表属性 name 相同内容出现出现的次数,并按次数从大到小排序 SELECT name, COUNT(*) AS count FROM your_table GROUP BY name ORDER BY count DESC;示例 select project_id, COUNT(*) AS count from app_ads_positions group by project_id order b…

(WRF/Chem)在大气环境领域实践技术应用

随着我国经济快速发展,我国面临着日益严重的大气污染问题。近年来,严重的大气污染问题已经明显影响国计民生,引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因…

智能报修管理系统的作用和功能

智能报修管理系统针对不同的服务对象、不同的服务内容、不同的紧急情况,不同的区域,自定义设定响应指标,承诺客户在多长时间内响应或是解决问题,保障服务质量。随着报修、后勤、运维等规模日趋庞大,许多单位每日需处理…

echarts-根据数据大小实现折线渐变色

先看示例图: 这几年一直在做大数据可视化前端开发,接下来把近几年用到的比较经典案例给大家分享下,主要用到的可视化库为Echarts、Threejs、Element、D3、fabricjs等。 这个案例是Echarts,Echarts算是学习成本比较低的一个很好的…

Java下打印一个等腰三角型

想达到这个结果,通常的做法是通过拼结两个三角型达到,但是实际上还有最右边的第三个三角型没有处理,这个拼结的方法总让人看起来有一点不完美的感觉,于是我自创了一个思路,一气合成,代码如下(本…