前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度使用了下 Serverless,太丝滑了!

深度使用了下 Serverless,太丝滑了!

作者头像
飞天小牛肉
发布于 2023-09-19 04:28:22
发布于 2023-09-19 04:28:22
6280
举报
文章被收录于专栏:飞天小牛肉飞天小牛肉
云函数和 FaaS

最近在开发自己的小项目的时候,因为各种原因使用上了云函数这个东西,不夸张的说开发时间直接减少一半,当然也没啥复杂业务逻辑,但是乱七八糟各种配置基本都可以摒弃掉了。

云函数就是一种 Serveless,准确来说,云函数属于 Serveless 中的 FaaS(Function as a Service,函数即服务),典型的产品有阿里云函数、腾讯云函数、AWS Lambda、Google Cloud Functions、Azure Functions 等等。

FaaS 本质上是一种事件驱动的由消息触发的服务,FaaS 供应商(比如阿里云、腾讯云)一般会集成各种同步和异步的事件源,通过订阅这些事件源,可以突发或者定期的触发函数运行。于传统服务需要将应用程序(Application)部署到拥有操作系统的虚拟机或者容器中并且需要长时间驻留的机制不同,FaaS 是直接将程序部署上到平台上即可,当有事件到来时触发执行,执行完了就可以卸载掉。

IaaS、PaaS、SaaS、Faas

看完上面这些介绍一定还有很多同学一头雾水,别急,下面我来详细介绍下 FaaS 的发展背景:

云计算这个词大伙肯定都听说过,这个概念听起来很牛逼,但其实核心目的就是云服务商能够为用户提供更强大、更便宜的算力。

当然,不要觉得云计算就是一个超大号的机房,只不过服务器更多些。

云计算的本质,不是算力资源的简单堆砌,而是池化。它将大量的零散算力资源(廉价的算力资源)进行打包、汇聚,实现更高可靠性、更高性能、更低成本的算力。

具体来说,在云计算中,CPU、GPU、内存、硬盘等计算资源被集合起来,通过软件的方式,组成一个虚拟的可无限扩展的“算力资源池”。如果用户有算力需求,“算力资源池”就会动态地进行算力资源的分配,构建一个虚拟的“计算机”。用户按需使用、付费,即可。相比于用户自购设备、自建机房、自己运维,云计算有明显的成本优势,可以节约大量资金和人力。

根据提供算力资源的层级不同,云计算通常也分为 IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)。如下图所示:

那么,云计算这种 “租” 的方式,是不是最终极的算力资源使用方式呢?我们作为用户,使用算力,还能更简单一点吗?

答案是肯定的。

不管是自建机房,还是云计算,用户都需要和服务器打交道,和软硬件环境打交道。这些都是工具和过程,而我们的最终目的是什么?是得到运算结果。

那么,为了得到结果,我们可不可以不要关心环境的搭建过程呢?能不能直接忽略掉数据库、缓存、消息队列等等各种乱七八糟的配置呢?或者说,既然环境可以租,那能不能直接 “租” 服务呢?

如此,Serverless 应运而生了!

Serverless 是架构、也是思想,它的目的就是在云计算的基础上,再向前迈进一步,彻底“包揽”所有的环境工作,直接提供计算服务。

那 Serverless 具体怎么做到直接租服务的呢,核心就是这个服务足够“细小”,变成了“函数级”的颗粒度。从层级上来看,Serverless 在传统云计算 SaaS 的 Application(应用)层级之上,又加了一层 Function(函数),它的颗粒度更细,可以更灵活地满足用户的算力需求。

在 Serverless 架构下,开发者只需编写代码并上传,云平台就会自动准备好相应的计算资源,完成运算并输出结果,从而大幅简化开发运维过程。

我深度体验了一把,这个开发体验真的太太太太丝滑了,开发到部署无缝衔接,再回到之前的开发方式我只能说有、笨重。

Serverless = FaaS + BaaS

说了半天 FaaS,还没有正式介绍 Serveless,简单记忆:Serveless = FaaS + BaaS

又出现了一个新概念 BaaS(Backend as a Service,后端即服务),BaaS 可让开发人员访问各种各样的第三方服务和应用。例如,云提供商可以提供认证服务、额外加密、云访问数据库以及高置信度使用数据。

而在 FaaS 下,开发人员仍然要编写自定义服务器端逻辑,但它可以在完全由云服务提供商管理的容器中运行。

综上,Serverless 的优点是勿容置疑的:

  1. 无需管理基础设施:在 Serverless 中,云提供商负责管理底层的服务器和基础设施,包括硬件和操作系统。这意味着开发者无需担心服务器的配置、维护和扩展,可以将更多精力放在应用程序的开发和功能上。
  2. 自动伸缩:Serverless 可以自动伸缩资源以满足流量需求,无需手动干预。这可以确保应用程序在高峰时期具有良好的性能,并在低流量时期降低成本。
  3. 按需计费:Serverless 模型按照实际使用的资源和执行时间来计费,因此开发者只需支付他们真正使用的部分,而无需预先购买或租赁资源。
  4. 快速启动:Serverless函数通常在几秒内启动,因此可以迅速响应请求。这对于需要快速扩展或处理瞬时负载的应用程序非常有用。
  5. 事件驱动:Serverless 函数通常是事件驱动的,可以响应各种事件,如 HTTP 请求、数据库更改、队列消息等。这使得它们非常适合构建微服务和处理异步任务。

至于缺点,首先说定论,对于业务逻辑复杂的大型项目来说,Serverless 可能还不是一个非常好的选择:

  1. 依赖云服务商:Serverless 的主动权掌握在云服务商的手上,就比如现在云函数主流还是用 Node.js 写,各厂商对 Java 云函数的支持普遍还不是那么好
  2. 调试复杂性:在 Serverless 中,本地调试和跟踪函数会更加复杂,因为函数的执行是在云提供商的环境中进行的。
  3. 状态管理:要想实现自由的缩放,无状态是必须的,而对于有状态的服务,使用 Serverless 这就丧失了灵活性,有状态服务需要与存储交互就不可避免的增加了延迟和复杂性。
  4. 延迟:应用程序中不同组件的访问延迟是一个大问题,我们可以通过使用专有的网络协议、RPC 调用、数据格式来优化,或者是将实例放在同一个机架内或同一个主机实例上来优化以减少延迟。而 Serverless 应用程序是高度分布式、低耦合的,这就意味着延迟将始终是一个问题。
  5. 成本不可控:虽然 Serverless 按需计费有助于降低成本,但对于某些高负载或长时间运行的工作负载,可能会导致不可控的费用增加。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-19 08:38,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 飞天小牛肉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
linux rsync的安装与配置
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了--remote sync
习惯说一说
2019/07/01
4K0
cwRsyncServer和cwRsync Client使用注意事项
1、cwRsync官网https://itefix.net/国内访问不了,cwRsync Client免费,cwRsync Server收费(4.1版本免费)
Windows技术交流
2023/08/14
3.4K0
文件远程同步、备份神器rsync
我一直想搭一个自动备份代码(或者延伸一下,各类文件)的系统,为此研究过NAS,但是买现成的成本有点高,自己折腾又嫌太麻烦。前两天,无意中发现了一个把玩客云刷机成Armbian(一个基于Arm的Linux)系统的教程,大喜,就马上把我吃灰两年的玩客云刷成了Armbian,折腾了两天,总算弄好了,通过USB转SATA,挂载了一块闲置的200G的硬盘,这样存储一些代码文件完全够用了。 下面就是刷好的Armbian:
角落工程师
2022/06/26
2.4K0
linux rsync同步备份文件带密码验证
C:\cwRsync\bin\rsync -vrtpg --delete --progress 10.0.0.5::51 /cygdrive/D/backup/MYSQL/51 windows<->linux linux主机--客户端应用服务器: 安装rsync 手工创建/etc/rsyncd.conf输入: #如果不加这行strict modes = false,可能会出现@ERROR: auth failed on module mysql strict modes = false #只允许192.16
葫芦
2019/04/17
5.3K0
Windows下利用cwRsync批量更新
前段时间写了一篇Linux下利用rsync批量更新的文章,见 http://www.linuxidc.com/Linux/2012-01/52132.htm 网游公司windows服务器还是很多的,今天就来讲讲windows下批量更新的方法,windows下同步数据利用cwRsync来完成的
星哥玩云
2022/06/30
1.5K0
Windows下利用cwRsync批量更新
rsync配置
链接:https://pan.baidu.com/s/1RbPZ6RntpzF3dJ5HLKkRUQ 提取码:psvm
码客说
2022/11/22
1.4K0
linux服务器同步利器​Rsync全介绍(付脚本)
Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快. Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试 此外,它在windows平台下也有相应的版本,如cwRsync和Sync2NAS等工具
IT运维技术圈
2023/02/02
2K0
RSync实现文件备份同步
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下: 1、可以镜像保存整个目录树和文件系统。 2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。 3、无须特殊权限即可安装。 4、优化的流程,文件传输效率高。 5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 6、支持匿名传输。 rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一、什么是rsync rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。 rsync 包括如下的一些特性: 能更新整个目录和树和文件系统; 有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等; 对于安装来说,无任何特殊权限要求; 对于多个文件来说,内部流水线减少文件等待的延时; 能用rsh、ssh 或直接端口做为传输入端口; 支持匿名rsync 同步文件,是理想的镜像工具; 二、架设rsync服务器 架设rsync 服务器比较简单,写一个配置文件rsyncd.conf 。文件的书写也是有规则的,我们可以参照rsync.samba.org 上的文档来做。当然我们首先要安装好rsync这个软件才行; A、rsync的安装; 获取rsync rysnc的官方网站:http://rsync.samba.org/可以从上面得到最新的版本。目前最新版是3.05。当然,因为rsync是一款如此有用的软件,所以很多Linux的发行版本都将它收录在内了。 软件包安装
Java架构师必看
2021/03/22
1.3K0
使用rsync+inotify实现nginx配置实时同步
源服务器的密码文件不用指定用户名,用户名在使用同步命令的时候才用到,目前源服务器的准备工作已经完成了。
御坂妹
2024/01/17
5610
Linux服务器使用rsync+inotify实现实时同步
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
西门呀在吹雪
2020/11/09
7.2K0
Rsync+Linux客户端+Windows客户端配置
rsync是一个功能非常强大的工具,Rsync的命令格式可以为以下六种: rsync [OPTION]... SRC DEST rsync [OPTION]... SRC [USER@]HOST:DEST rsync [OPTION]... [USER@]HOST:SRC DEST rsync [OPTION]... [USER@]HOST::SRC DEST   rsync [OPTION]... SRC [USER@]HOST::DEST   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]   对应于以上六种命令格式,rsync有六种不同的工作模式:   1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup   2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src   3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data   4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.17.5.13::www /databack   5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.17.5.13::www   6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.17.5.13/www rsync参数的具体解释如下: -v, --verbose 详细模式输出 -q, --quiet 精简输出模式 -c, --checksum 打开校验开关,强制对文件传输进行校验 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD -r, --recursive 对子目录以递归模式处理 -R, --relative 使用相对路径信息 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX 定义备份文件前缀 -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件) -l, --links 保留软链结 -L, --copy-links 想对待常规文件一样处理软链结 --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结 --safe-links 忽略指向SRC路径目录树以外的链结 -H, --hard-links 保留硬链结 -p, --perms 保持文件权限 -o, --owner 保持文件属主信息 -g, --group 保持文件属组信息 -D, --devices 保持设备文件信息 -t, --times 保持文件时间信息 -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间 -n, --dry-run现实哪些文件将被传输 -W, --whole-file 拷贝文件,不进行增量检测 -x, --one-file-system 不要跨越文件系统边界 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节 -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步 --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息 -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件 --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件 --delete 删除那些DST中SRC没有的文件 --delete-excluded 同样删除接收端那些被该选项指定排除的文件 --delete-after 传输结束以后再删除 --ignore-errors 及时出现IO错误也进行删除 --max-delete=NUM 最多删除NUM个文件 --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输 --force 强制删除目
星哥玩云
2022/07/03
11.2K0
Rsync+Linux客户端+Windows客户端配置
CentOS下(rsync+crontab)触发式实现服务器间的文件备份同步
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/78657866
泥豆芽儿 MT
2018/09/11
1.4K0
CentOS下(rsync+crontab)触发式实现服务器间的文件备份同步
rsync实现 linux与windows备份同步
linux端可以使用yum install -y rsync直接安装,也可以在官网http://rsync.samba.org 下载最新源码或二进制包安装。
IT大咖说
2020/08/11
7.6K0
rsync实现 linux与windows备份同步
菜鸟实测可用的Centos rsync文件同步配置步骤
本人菜鸟,接触centos系统有一段时间了,但是要搞什么东西还是要全部去网上找教程。很多教程不知道为什么,有的不适合现在的系统,不知道是不是我的VPS的原因。现在整理一个可用的文件同步教程分享给大家。 一、服务器端配置: 执行如下代码: yum -y install xinetd vi /etc/xinetd.d/rsync 如果/etc/xinetd.d/rsync这个文件存在,就把里面的disable = yes改为disable = no 如果不存在,就把下面的内容写进去,然后保存. service
用户2135432
2018/06/04
1.8K0
Rsync保持两服务器数据一致
上次数据通过NFS拷贝过去后,只是实验一下,还没有真正迁移,现在两边数据又有不一样的;这次准备用rhel本身的rsync服务保持数据同步
三杯水Plus
2018/11/14
1.9K0
rsync+sersync数据同步
Author: Andrew Tridgell, Wayne Davison, and others
胡齐
2019/09/23
1.4K0
rsync+sersync数据同步
rsync+inotify实时同步环境部署记录
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足。 首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的,并且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。 其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时
洗尽了浮华
2018/01/22
1.1K0
linux rsync + inotify搭建实时网页发布同步系统
#如果不加这行strict modes = false,可能会出现@ERROR: auth failed on module mysql strict modes = false #只允许192.168.1.0 网段下的客户端同步,也可指定IP。www.linuxidc.com 多个IP用逗号且无空格连接,如192.168.1.2,192.168.1.3 #也可用:hosts deny = 0.0.0.0/32 hosts allow = 192.168.0.166/32 log file = /var/log/rsyncd.log #pid file = /var/run/rsyncd.pid #指定rsync的pid文件,可不用。#motd file = /etc/rsyncd.motd #欢迎信息文件名称和存放位置(此文件没有,可以自行添加) #lock file = /var/run/rsync.lock #指定支持max connections参数的锁文件,默认值 #max connections = 10   # 最大连接数为10 [web]  #指定认证的备份模块名为mysql,在client端需要指定 #备份路径 path= /var/www #验证用户,这行如果不用,则可匿名访问,多个用户用逗号“,”分隔 #不建议用root。 auth users = wangzi #备份以什么用户ID和组ID进行,也可用root #但建议用mysql用户去读,只要设置有足够权限的用户即可,不建议用root. uid = root gid = root # 可以忽略一些无关的IO错误 ignore errors #不允许列文件 list = false #密码验证文件:username:password secrets file = /etc/rsyncd.secrets #关闭只读,可以上传 read only = no write only = no #pid file = /var/run/rsyncd.pid #log file = /var/log/rsyncd.log #lock file = /var/run/rsync.lock #trict modes = false,可能会出现@ERROR: auth failed on module mysql #只允许192.168.1.0 网段下的客户端同步,也可指定IP。www.linuxidc.com 多个IP用逗号 #motd file = /etc/rsyncd.motd #欢迎信息文件名称和存放位置(此文件没有,可以自行>添加) #lock file = /var/run/rsync.lock #指定支持max connections参数的锁文件,默认值
葫芦
2019/05/09
1.5K0
定时备份windows机器上的文件到linux服务器上的操作梳理(rsync)
由于需要对网络设备做备份,备份文件是放到windows机器上的。现在需要将备份数据同步到linux备份机器上,想到的方案有三种: 1)将windows的备份目录共享出来,然后在linux服务器上进行挂载,最后对挂载目录进行定时同步。这种方式不太安全。 2)使用tftp、sftp方式,也不太安全。 3)推荐通过rsync方式(cwRsyncServer_4.1.0_Installer),windows机器到windows机器之间的定期同步也使用这种方式。 下面简单介绍下使用rsync方式的同步过程: 一、wi
洗尽了浮华
2018/01/22
6.3K0
定时备份windows机器上的文件到linux服务器上的操作梳理(rsync)
Linux学习笔记之rsync配置
  Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。 
Jetpropelledsnake21
2019/05/23
1.5K0
推荐阅读
相关推荐
linux rsync的安装与配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档