一文让你迅速读懂Serverless

news/2024/5/20 5:48:26 标签: serverless, 运维, 后端
本文讲的是一文让你迅速读懂Serverless【编者的话】Serverless架构,或者称为无服务器架构,是最近几年新冒出来的一种架构风格。本文主要介绍的是Serverless下包含的两个概念:FaaS、BaaS。

【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站】本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览;持续集成系统介绍;客户端与服务端的 CI/CD 实践;开发流程中引入 CI、CD;Gitlab 和 CI、CD 工具;Gitlab CI、Drone 的使用以及实践经验分享等。

什么是 Serverless

Serverless架构,或者称为无服务器架构,是最近几年新冒出来的一种架构风格。这究竟是一种什么样的架构?无服务器,就是真的没有服务器了么?其实,对于 Serverless 来说,只是用户不用更多的去考虑服务器的相关内容了,无需再去考虑服务器的规格大小、存储类型、网络带宽、自动扩缩容问题了;同时,也无需再对服务器进行运维了,无需不断的打系统补丁、应用补丁、无需进行数据备份、软件配置等工作了。

但是没有服务器,如何来将程序、应用运行起来呢?这里要介绍的是Serverless下包含的两个概念:函数即服务,Function as a Service,FaaS;后端即服务,Backend as a Service,BaaS。

函数即服务 FaaS

函数即服务 FaaS,作为一种新的计算能力提供方式,让用户抛弃了对服务器的配置和管理,仅需编写和上传核心业务代码,交由平台完成部署、调度、流量分发、弹性伸缩等能力。FaaS的出现,会从底层开始变革计算资源的形态,提供了一种新的方式来提供计算资源,同时也会给软件架构与应用服务部署带来新的设计思路,进一步降低云计算的使用门槛,推动全行业在服务架构上的创新步伐。

后端即服务 BaaS

后端即服务 BaaS,其实大家已经使用很久了,这里的后端,指的就是各种云产品和云服务,例如对象存储 COS,消息队列 CMQ,云数据库 CDB、TDSQL,云缓存 CRedis、CMemcached,甚至到各种以 API 形式提供的服务如万象优图 CI,视频处理 VC。这些产品或服务,用户直接开通即可使用,无需考虑部署、扩容、备份、优化、安全等各种运维工作,做到了开箱即用,无需自己去进行服务器或应用的维护和管理,因此同样也是Serverless的一部分。

为什么要 Serverless

介绍了什么是 Serverless,但是为什么会出现 Serverless,或者为什么要使用 Serverless 呢?我们这里可以从三个方面来看看,这三个方面可以类比为:天时,地利,人和。

天时,这里突出的时,即时间。传统的服务器模式,应用上线前,还得完成服务器准备,环境部署,数据库准备,存储准备等各种工作;上线后,还得面临计算扩容,存储扩容,数据库维护和扩容等各种运维工作。这这个过程中,应用上线和迭代的时间、节奏,受限于各种准备和维护工作。而利用 Serverless,通过使用 SCF 产品,专注于完成业务相关的核心代码,通过直接使用 COS,CDB,CMQ,CRedis 等产品,解决数据存储,数据库,消息队列,缓存等问题,不再费心运维,而专注在业务开发和迭代上,能更快的完成应用上线,在这个互联网加速发展的时代,做到一步领先,步步领先。

地利,这里突出的利,即费用支出。传统的服务器模式,无论有没有用户正在访问,应用始终要保持运行,而在有用户访问时,又要关注服务器的资源使用率,在使用率达到一定程度时就要考虑扩容,避免突发访问量导致的资源不足。在这个过程中的费用,始终是有一部分为未使用的计算资源而支付。而 Serverless 架构,能确保所有的费用,都是用在了实际的程序运行、数据存储、用户访问中。SCF 云函数的计费方式,就是通过函数的调用次数和执行时间来统计费用,有用户访问或事件产生,才会有函数执行,才会有费用计算;相反,没有函数执行时,则没有费用支出。同理,其他的相关云产品,也是类似,例如 COS 仅收取存储、外网流量的费用,CMQ 仅收取请求次数、外网流量费用,CRedis 仅按实际使用内存大小收费。据测算,根据不同用户的应用压力情况,SCF 能为用户带来 30%~70% 的费用节省程度。

人和,这里突出的是人。传统的服务器模式,运维人员要投入大量的精力去维护服务器、数据库、存储等各种基础设施,解决各种集群、分布式系统的搭建问题,而实际运维解决自身应用问题的时间,可能只会占到很小一部分,而开发人员除了对自身业务应用的开发外,也需要投入时间,解决可能存在的各种外围系统的问题。而 Serverless 架构,无需运维人员再投入到基础设施中去了,而开发人员也可以全面关注业务系统的开发。SCF 产品,可以让开发人员直接编写业务逻辑核心代码,利用微服务架构,快速上线应用。CMQ,CDB,COS,CRedis 各种云产品,无需搭建配置,开通即可使用,而将基础运维工作交由云来完成。在这种情况下,脱离了基础运维运维人员,可以提升自身视野,从更高角度来看待运维工作,实现业务运维;而开发人员,可以充分利用 CICD、DevOps能力,提升整个应用或业务的集成能力。

怎么用Serverless

COS、CMQ、CDB、CRedis 这类 BaaS 型云产品,由于面世的时间已经很长,对其使用的方式,基本和原有使用 MySQL、Redis 等产品相同,或者通过产品提供的 API、SDK 直接访问使用。而 SCF 云函数,作为 FaaS 产品,有着稍有不同的使用方式。

事件触发:SCF 的工作模式为事件触发,因此要考虑好触发方式。例如,利用 SCF 来处理图片生成缩略图,就可以利用 COS 事件,在图片文件上传 COS 后,上传事件就能自动触发函数执行,来生成新的缩略图并再次存入 COS 中。

无状态服务:函数需要是无状态(stateless)的,缓存、日志、数据库等全部通过 CRedis、COS、CDB 这类云产品来支持,这样才能保证在业务请求突增时服务能迅速扩展。

微服务:事件驱动(event-driven)和无状态(stateless)属性正是微服务架构所需要的。因此,在一开始就将自身的应用设计为微服务架构,解耦各模块间关联,使得应用成为可生长可进化的系统。

无服务器云函数 SCF 实现独立开发、简化测试和加速部署,能够助力公司在关键时期快速上线和迭代,为初创期的产品提供了很好的解决方案。

作者:腾讯云Serverless团队

原文发布时间为:2017-08-16

本文作者:克劳德同学

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:一文让你迅速读懂Serverless


http://www.niftyadmin.cn/n/1823712.html

相关文章

Linux 命令详解(十)Shell脚本的数组详解

1、数组定义 [rootbastion-IDC ~]# a(1 2 3 4 5 6 7 8) [rootbastion-IDC ~]# echo $a 一对括号表示是数组,数组元素用“空格”符号分割开。 2、数组读取与赋值1)得到长度: [rootbastion-IDC ~]# echo ${#a[]} 8 [rootbastion-IDC ~]# echo $…

049.两个小练习

求100-999之间所有的水仙花数。什么是水仙花数&#xff1f;一个数百位的立方十位的立方个位的立方。3713*3*37*7*71*1*1371#include<stdio.h>#include<stdlib.h>int main() { //求100-999之间的水仙花数 //一个数百位的立方 十位的立方 个位的立方。 int l_百位…

thinkphp3.1 多表联合查询代码

php代码 public function info(){$where[openid]session(openid);用户session$db M("pay");//主表名$table "pay";$table2 "tupian";//联合查询表名$page_size 5; //每页显示记录数import(ORG.Util.Page);// 导入分页类$count count( $db -&…

测试原理

目录 一、黑盒测试 &#xff08;一&#xff09;等价类划分 1.定义 2.划分等价类 3.划分等价类的标准&#xff1a; 4.划分等价类的方法 5.设计测试用例 &#xff08;二&#xff09;边界值分析方法 &#xff08;三&#xff09;错误值推测法 二、测试介绍 一、黑盒测试 …

要想让计划任务“坑”死你的系统,你一定要这样写

别拿计划任务不当干粮&#xff0c;小心分分钟干掉你的系统&#xff0c;想看看怎么样狗带最惨&#xff0c;请参考下面的手册获取大量的数据逐条处理许多计划任务是用于统计或者批处理的&#xff0c;经常需要遍历某个列表比如&#xff1a;//查找所有将要过期的用户&#xff0c;逐…

Linux常用命令二-磁盘-进程-端口

https://blog.csdn.net/chengxuya/article/details/109062762 https://blog.csdn.net/chengxuya/article/details/109478860 1.内存&#xff1a; free -h -s 3 每隔3秒监控一次内存&#xff1b;more /proc/meminfo 查看内存信息&#xff1b;查看内存信息&#xff1a;cat /pr…

python 多线程笔记(5)-- 生产者/消费者模式

我们已经知道&#xff0c;对公共资源进行互斥访问&#xff0c;可以使用Lock上锁&#xff0c;或者使用RLock去重入锁。 但是这些都只是方便于处理简单的同步现象&#xff0c;我们甚至还不能很合理的去解决使用Lock锁带来的死锁问题。 要解决更复杂的同步问题&#xff0c;就必须考…

JS学习之路系列总结三才阵(此文犹如武林之中的易筋经,是你驰骋IT界的武功心法,学会JS五大阵法就学会了JS,博主建议先学三才阵)...

学习一门知识&#xff0c;先要学习其中存在的原理&#xff0c;就像一名医生&#xff0c;如果不知道人体内存在的规律&#xff0c;生病的原因&#xff0c;如何治病等&#xff0c;他就不是一名优秀的医生。同样学习JavaScript&#xff08;以下简称JS&#xff09;&#xff0c;如果…