当前位置: 首页 > news >正文

云原生架构相关技术_3.无服务器技术

1.技术特点

1.1面向特定领域的后端云服务(BaaS) 

        随着以Kubernetes为代表的云原生技术成为云计算的容器界面,Kubernetes成为云计算的新一代操作系统。面向特定领域的后端云服务(BaaS)则是这个操作系统上的服务API,存储、数据库、中间件、大数据、AI等领域的大量产品与技术都开始提供全托管的云形态服务,如今越来越多用户已习惯使用云服务,而不是自己搭建存储系统、部署数据库软件。

 1.2无服务器技术(Serverless)

        当这些BaaS云服务日趋完善时,无服务器技术(Serverless)因为屏蔽了服务器的各种运维复杂度,让开发人员可以将更多精力用于业务逻辑设计与实现,而逐渐成为云原生主流技术之一。Serverless计算包含以下特征

        (1)全托管的计算服务,客户只需要编写代码构建应用,无需关注同质化的、负担繁重的基于服务器等基础设施的开发、运维、安全、高可用等工作;

        (2)通用性,结合云BaaSAPI的能力,能够支撑云上所有重要类型的应用;

        (3)自动弹性伸缩,让用户无需为资源使用提前进行容量规划;

        (4)按量计费,让企业使用成本得有效降低,无需为闲置资源付费。 

1.3函数计算(FaaS) 

        函数计算(Function as a Service,FaaS)是Serverless中最具代表性的产品形态。通过把应用逻辑拆分多个函数,每个函数都通过事件驱动的方式触发执行,例如,当对象存储(OSS)中产生的上传/删除对象等事件,能够自动、可靠地触发FaaS函数处理且每个环节都是弹性和高可用的,客户能够快速实现大规模数据的实时并行处理。同样,通过消息中间件和函数计算的集成,客户可以快速实现大规模消息的实时处理。

        目前函数计算这种Serverless形态在普及方面仍存在一定困难,例如:

        (1)函数编程以事件驱动方式执行,这在应用架构、开发习惯方面,以及研发交付流程上都会有比较大的改变。

        (2)函数编程的生态仍不够成熟,应用开发者和企业内部的研发流程需要重新适配。

        (3)细颗粒度的函数运行也引发了新技术挑战,比如冷启动会导致应用响应延迟,按需建立数据库连接成本高等。

        针对这些情况,在Serverless计算中又诞生出更多其他形式的服务形态,典型的就是和容器技术进行融合创新,通过良好的可移植性,容器化的应用能够无差别的运行在开发机、自建机房以及公有云环境中;基于容器工具链能够加快解决Serverless的交付。如案例云提供了弹性容器实例(ECI)以及更上层的Serverless引擎(SAE),Google提供了CloudRun服务,这都帮助用户专注于容器化应用构建,而无须关心基础设施的管理成本。

2.技术关注点

2.1计算资源弹性调度

         为了实现精准、实时的实例伸缩和放置,必须把应用负载的特征作为资源调度依据,使用“白盒”调度策略,由Serverless平台负责管理应用所需的计算资源。平台要能够识别应用特征,在负载快速上升时,及时扩容计算资源,保证应用性能稳定;在负载下降时,及时回收计算资源,加快资源在不同租户函数间的流转,提高数据中心利用率。

2.2负载均衡和流控

         资源调度服务是|Serverless系统的关键链路。为了支撑每秒近百万次的资源调度请求,系统需要对资源调度服务的负载进行分片,横向扩展到多台机器上,避免单点瓶颈。分片管理器通过监控整个集群的分片和服务器负载情况,执行分片的迁移、分裂、合并操作,从而实现集群处理能力的横向扩展和负载均衡

        在多租户环境下,流量隔离控制是保证服务质量的关键。由于用户是按实际使用的资源付费,因此计算资源要通过被不同用户的不同应用共享来降低系统成本。这就需要系统具备出色的隔离能力,避免应用相互干扰。

2.3安全性 

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

http://www.lryc.cn/news/359269.html

相关文章:

  • Leetcode:Z 字形变换
  • Python 3 判断文件是否存在
  • (深度学习记录)第TR3周:Transformer 算法详解
  • 谷神前端组件增强:自定义列
  • 31-ESP32-S3-WIFI篇-02 Event Group (事件标记组)
  • 构建企业级AI私有知识库
  • C语言王国——杨氏矩阵
  • 陪玩小程序都需要怎么做?
  • postgressql——子事务可见性判断 性能问题(8)
  • 20240531在飞凌的OK3588-C开发板上跑原厂的Buildroot测试USB摄像头
  • 从0开始学统计-什么是回归?
  • Element-ui使用上传时弹框选择文件类型
  • 原生小程序一键获取手机号
  • ARM虚拟机安装OMV
  • 【协议开发系列】梳理关于TCP和UDP两种协议的区别和使用场景
  • vue blob实现自定义多sheet数据导出到excel文件
  • Python—面向对象小解(3)
  • Nginx超时时间
  • Imgs,GT,Edge,Gradient_all,Gradient_Foreground
  • 自学成才Flutter 弹性布局、线性布局
  • Part 3.1 深度优先搜索
  • 前端Vue小兔鲜儿电商项目实战Day03
  • ORACLE 查询SQL优化
  • Ansible03-Ansible Playbook剧本详解
  • Qt-qrencode生成二维码
  • 长安链使用Golang编写智能合约教程(三)
  • Vercel deploy- Nextjs project error-URL link-env variable
  • Java | Leetcode Java题解之第123题买卖股票的最佳时机III
  • Ubuntu22.04之扩展并挂载4T硬盘(二百三十三)
  • Redis实现延迟队列