探索云原生世界:Serverless 技术的崛起与应用

在云原生架构的浪潮中,Serverless 技术正逐渐崭露头角,成为开发者们极具吸引力的选择。Serverless 的出现颠覆了传统的服务器管理模式,为应用开发带来了全新的可能性。

Serverless 架构是一种无需管理服务器的新型架构,它允许开发人员专注于编写代码,而无需关心服务器的运行和维护。Serverless 技术可以自动扩展和缩减资源,降低运营成本,提高开发效率。Serverless 技术真正做到了在部署应用时无须涉及基础设施的建设,自动构建、部署和启动服务。

IaaS(Infrastructure as a Service,基础设施即服务)和容器技术是云的基础设施,可以为上层应用的运行提供海量低成本的计算资源。以 Kubernetes 为代表的容器编排服务是支撑云原生应用的操作系统,负责高校管理基础设施资源。面向特定领域的后端云服务(Backend as a Service,BaaS)提供了性能高度优化、抽象度更高的 API,成为构建云原生应用的重要元素。随着云原生的发展,存储、数据库、中间件、大数据、AI 等领域出现了越来越多的全托管、Serverless 形态的云服务,而不是自建存储系统和部署数据库软件。

1、Serverless 技术简介

Serverless 技术是一种计算模型,它让开发者无须关心服务器的管理和维护,而是专注于编写业务逻辑,在Serverless 模型中,开发者只需要编写函数,并将其上传云平台,云服务提供商会自动管理函数的运行环境,并根据函数的出发事件动态分配和释放资源。

FaaS(Function as a Service,功能即服务)是 Serverless 中最具代表性的服务形态,它把应用逻辑拆分为多个函数,并通过事件驱动的方式出发执行每个函数。FaaS 这种 Serverless 形态非常适合事件驱动的数据处理、API 服务等场景,但也面临着一些挑战。

2、Serverless 的特点

Serverless 消除了服务器等底层基础设施的运维复杂度,让开发人员能够更好地专注于业务逻辑的设计与实现,包含以下特点:

全托管的计算服务

客户只需要编写代码构建应用,而无须关注同质化的、负担繁重的服务器等基础设施的开发和运维等工作。

通用性

结合丰富的 BaaS 云服务能力,支持云上所有重要类型的应用。

自动的弹性伸缩

云平台会根据函数的出发事件动态调整资源,以满足应用的需求,大幅度降低用户资源容量规划的难度。

按量计费

开发者只需要为实际使用的资源付费,而不需要预先购买或租用服务器,企业的使用成本得到有效降低,无须为闲置资源付费。

事件驱动

Serverless 函数通常是通过事件触发器来执行的,比如 HTTP 请求、消息队列等。

3、Serverless 典型技术与架构

计算资源弹性调度

为了实现精准、即时的实例伸缩和放置,需要把应用负载的特征作为资源调度的依据,使用“白盒”调度策略,由 Serverless 平台负责管理应用所需的计算资源。平台要能够识别应用负载的特征,在负载快速上升时,及时扩容计算资源,保证应用性能的稳定性;在负载下降时,及时回收计算资源,加快资源在不同账户函数间的流转,提高数据中心的利用率。因此,更实时、更主动、更智能的弹性伸缩能力是函数计算服务获得良好用户体验的关键。计算资源的弹性调度,可以帮助用户实现指标收集、在线决策、离线分析、决策优化的闭环。

在创建新实例时,系统需要判断如何将应用实例放置在下层计算节点上。放置算法应当满足多方面的目标,具体列举如下:

  • 容错:当有多个实例时,将其分布在不同的计算节点和可用区上,以提高应用的可用性
  • 资源利用率:在不损失性能的前提下,将计算密集型、I/O密集型等应用调度到相同的计算节点上,尽可能充分地利用节点的计算、存储和网络资源,动态迁移不同节点上的碎片化实例,进行“碎片整理”,以提高资源的利用率
  • 性能:例如,复用启动相同应用实例或函数的节点,利用缓存数据缩短应用的启动时间等
  • 数据驱动:除了在线调度之外,系统还可以将天、周或更大时间范围的数据用于离线分析。离线分析的目的是利用全量数据验证在线调度算法的效果,为参数调优提供依据,通过数据驱动的方式加快资源流转的速度,提高集群整体资源的利用率

流量控制

在多租户环境下,流量控制是保证服务质量的关键。以函数计算为例,当函数调用量超过预期值时,如果问题是函数逻辑错误导致大量的非预期调用,那么系统应当及时进行流量控制,以确保用户的费用可控。函数计算允许用户配置最大函数运行实例数来限制应用负载。当应用负载上升、系统扩容时,如果函数实例数到达配额上限,那么系统将停止扩容并返回流控错误。除了用户层面的流量控制,当函数的负载动态变化导致系统节点过载时,也应当及时进行流量控制,以避免用户间互相影响。例如,当多个用户流量陡增、超过节点服务能力时,即使每个用户都未用满配额,系统也需要控制流量。该场景下的流量控制不但要及时,而且要公平。流量陡增越大的函数,计算请求被流量控制的概率应当越高。

安全性

Serverless 计算平台的定位是通用计算服务,要能够执行任意用户代码,因此安全是不可逾越的底线。系统应当从权限管理、网络安全、数据安全、运行时安全等各个维度全面保障应用的安全性。轻量安全容器等新的虚拟化技术实现了更小的资源隔离粒度、更快的启动速度以及更小的系统开销,使数据中心的资源使用变得更加细粒度和动态化,大幅提升了资源的使用效率。

4、Serverless 的应用场景

当前 Serverless 主要应用场景如下:

Web 应用开发

Serverless 可以用于构建轻量级的后端服务,支持无服务器的前后端分离架构。

数据处理与分析

Serverless 可以用于处理大规模数据,比如实时数据处理、ETL 任务等。

事件驱动的应用

Serverless 函数可以根据事件触发器执行,适用于处理异步事件和定时任务。

5、Serverless 的未来展望

随着云原生技术的不断发展,Serverless 技术也将迎来更广阔的应用场景和发展场景,未来,可以预见 Serverless 将成为云原生架构的重要组成部分,为开发者提供更简单、更灵活、更高效的开发方式。

Serverless 技术的崛起标志着云原生时代的来临,它将为应用开发带来全新的变革,随着越来越多的开发者和企业采用 Serverless 技术,我相信 Serverless 技术将成为未来云原生架构的重要支柱之一,推动企业数字化转型的进程。

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

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

相关文章

RabbitMQ 基本介绍

RabbitMQ 基本介绍 消息模型 所有 MQ 产品从模型抽象上来说都是一样的过程: 消费者(consumer)订阅某个队列。生产者(producer)创建消息,然后发布到队列(queue)中,最后…

大模型快速实现python3+html内容在线渲染

需求: 有一份数据需要通过前端在线展示给用户,不需要复杂的样式交互,后端服务是基于Python3实现的API接口,对前端技术不是很了解,需要快速实现该需求。类似样式即可: 思路: 如果页面不复杂&am…

【QT】对比C#的ArrayList,qt中也有自己的通用容器(若有误,恳请直接指出)

在Qt中&#xff0c;可以使用QList或QVariantList来代替C#中的ArrayList。QList是Qt中的一个通用容器类&#xff0c;类似于C#中的List<T>&#xff0c;但它不是类型安全的。另一方面&#xff0c;QVariantList是QList<QVariant>的别名&#xff0c;用于存储可以包含任何…

软件测试实战,Web项目网页bug定位详细分析总结(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、前置条件 1&a…

归并排序

参考链接 排序算法&#xff1a;归并排序【图解代码】_哔哩哔哩_bilibili #include <stdio.h> #include <stdlib.h>// 合并 void merge(int arr[], int tempArr[], int left, int mid, int right) {// 标记左半区第一个未排序的元素int l_pos left;// 标记右半区…

中国制造2035任重道远前途光明wordpress外贸独立站模板

生物能源wordpress外贸公司模板 生物能源wordpress外贸公司模板&#xff0c;生物能源、生物化工行业外贸公司网站模板。 https://www.jianzhanpress.com/?p3649 汽车配件wordpress外贸网站模板 汽车配件wordpress外贸网站模板&#xff0c;汽车零配件外贸公司自建站外贸英文…

2023年甘肃省职业院校技能大赛高职组“信息安全管理与评估”(赛项样卷A)

信息安全管理与评估 第一阶段 网络平台搭建与设备安全防护 目 录 第一阶段竞赛项目试题 3 介绍 3 所需的设备、机械、装置和材料 3 评分方案 3 注意事项 3 项目和任务描述 3 1.网络拓扑图 3 2.IP地址规划表 4 工作任务 5 任务1&#xff1a;网络平台搭建 6 任务2&#xff1a;网…

基于单片机的储油罐液位无线监测系统

摘要: 本设计通过无线通信技术为油田储油罐设计了一款液位测量装置,以STC89C52 单片机为中心控制器,采用超声波测距模块HC-SR04 作为液位测量传感器,选用nRF24L01 无线通信模块对采集到的数据进行实时发送与接收,然后将接收到的数据实时处理后传送到上位机进行显示,达到液…

大创项目技术总结(复试准备)

&#xff08;一&#xff09;项目特色 &#xff08;1&#xff09;AI助力阿尔兹海默症的“老药新用”&#xff1a;“老药新用”目前已成为现在的研究趋势。在我们的项目当中我们使用了LDA文本主题模型的机器学习方法来对相关论文文本数据进行文本挖掘&#xff0c;并使用挖掘结果…

安卓部分手机使用webview加载链接后白屏(Android低版本会出现的问题)

前言 大爷&#xff1a;小伙我这手机怎么打开你们呢这个是白屏什么都不显示。 大娘&#xff1a;小伙我这也是打开你们呢这功能&#xff0c;就是一个白屏什么也没有&#xff0c;你们呢的应用不会有病毒吧。 小伙&#xff1a;我的手机也正常&#xff1b; 同事&#xff1a;我的也正…

【数据结构】堆排序

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解堆排序&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 堆的概念二. 堆排序&#xff08;以升序为例&#xff09;三. 代码 一. 堆的概念 如果有一个…

rust入门(1)创建项目

安装 vscode 安装插件 rust-analyzerNative Debug vscode 配置自动格式化代码 settings.json{"editor.defaultFoldingRangeProvider": null,"[rust]": {"editor.defaultFormatter": "rust-lang.rust-analyzer", // Makes the magi…

3. 在Go语言项目中使用Zap日志库

文章目录 一、介绍二、 默认的Go Logger1. 实现Go Logger2. 设置Logger3. 使用Logger4. Logger的运行5. Go Logger的优势和劣势 三、Uber-go Zap1. 为什么选择Uber-go zap2. 安装3. 配置Zap Logger4. 定制logger4.1 将日志写入文件而不是终端4.2 将JSON Encoder更改为普通的Log…

GlusterFS性能调优

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 相关文章&#xff1a; 分布式存储——GlusterFS 关于GlusterFS的卷 GlusterFS—新手陷阱 GlusterFS常用命令集 GlusterFS系…

时间序列-AR MA ARIMA

一、AR模型(自回归) AR探索趋势和周期性 预测依赖于过去的观测值和模型中的参数。模型的阶数 p pp 决定了需要考虑多少个过去时间点的观测值。 求AR模型的阶数 p和参数 ϕ i \phi_i ϕi​ &#xff0c;常常会使用统计方法如最小二乘法、信息准则&#xff08;如AIC、BIC&#xf…

ChatGPT介绍

ChatGPT概述 ChatGPT是一种前沿的大型语言模型&#xff08;Large Language Model, LLM&#xff09;&#xff0c;由人工智能研究组织OpenAI研发并推出。它基于Transformer架构&#xff0c;这是一种在自然语言处理&#xff08;NLP&#xff09;领域取得突破的深度学习方法。通过在…

testvue-common

1bus.js import Vue from vue;// 使用 Event Bus const bus new Vue();export default bus; 2directives.js import Vue from vue;// v-dialogDrag: 弹窗拖拽属性 Vue.directive(dialogDrag, {bind(el, binding, vnode, oldVnode) {const dialogHeaderEl el.querySelect…

安全先行,合规的内外网文件摆渡要重点关注什么?

内外网隔离在政府、军工部门、科研单位等已成为很常见的网络安全建设措施&#xff0c;内外网隔离是一种网络安全措施&#xff0c;用于保护内部网络免受外部网络的攻击和威胁。 内外网隔离的目的在于限制内外网之间的通信和数据交换&#xff0c;但网络隔离后&#xff0c;仍有数据…

JDK8 stream toMap方法介绍

JDK8 List转Map方法&#xff0c;有下3种方法。 toMap(keyMapper, valueMapper); toMap(keyMapper, valueMapper, BinaryOperator<U> mergeFunction); toMap(keyMapper, valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapSupplier);keyMapper&a…

2024年(第十届)全国大学生统计建模大赛选题参考(一)

本届大赛主题为“大数据与人工智能时代的统计研究”&#xff0c;参赛队围绕主题自拟题目撰写论文。 1. 大数据分析与处理 研究思路 数据收集&#xff1a;首先确定数据来源&#xff0c;例如社交媒体、企业数据库或公开数据集&#xff0c;并使用爬虫技术或API收集数据。数据预…