函数即服务,一步到位!

无服务器(Serverless/FaaS) 的现状和未来

谈起构建一个云端项目,你会想到什么?复杂的服务器购买流程和配置、各种复制的环境依赖安装、Docker镜像的打包和构建,还是令人头疼的后期运维......

然而,现在随时随地都能看见一个新的项目,每个有趣的项目都会带来很多的流量,这看起来并不复杂。但是各个平台又有部分接口的不兼容,几经周折,构建好了一个平台,最终发现流量极低。如果此时再去开发其他平台,得不偿失。

如何构建一个有趣的项目,只需一次构建就能多平台调用呢,现在有请我们今天的主角,最近非常火爆的函数即服务:FaaS !

什么是函数即服务 (FaaS)?

函数即服务 (FaaS) 是一种云计算形式,可帮助开发人员更好地工作,无需他们维护应用程序基础架构。当开发人员利用FaaS时,他们使用FaaS平台为他们构建、运行和监督应用程序包。

在这一点上,您可能会认为FaaS听起来像无服务器计算 ——它确实如此。无服务器计算允许开发人员将管理数据库、API网关、存储、消息传递和其他基础设施外包给第三方提供商。FaaS 是一种无服务器计算。

不过这个无服务器是指用户在使用Faas构建应用时无需创建服务器,而服务提供商的底层依旧是服务器架构,对于用户来说只需要输入参数即可构建应用,实在是太方便了。

Lighthouse+OpenFaaS

轻量应用服务器Lighthouse区别于普通云服务器,主要面向轻量级的应用场景,为用户提供开箱即用的云服务器产品。它将基础的云资源统一打包进套餐,同时为用户提供丰富的应用镜像,除了包含底层的操作系统之外,还分别封装了各个场景下必需的应用软件,为用户免去了购买普通云服务器时繁琐的应用部署、配置和初始化过程,购买即可用。

优惠链接:https://url.cn/cwrkpDAT

img

OpenFaas 简介

OpenFaaS 是一款高人气的开源的 faas 框架,开发人员可以借助 OpenFaaS 将事件驱动的功能和微服务部署到 Kubernetes,而无需编写重复、枯燥的样板编码。只需将代码或现有二进制文件打包到 Docker 镜像中,以获得具有自动缩放和监控指标的高度可扩展端点(Endpoints)。

OpenFaas 特点

  • 平台无关:OpenFaas 是开源框架,可以部署在任意云平台,无需担心平台锁定的问题

  • 语言无关:任意语言编写的函数均可打包至 Docker 镜像并部署运行

  • 使用简单:内置 UI,丰富的 CLI 命令和一键安装

  • 灵活伸缩:高峰期自动扩容,空闲时自动缩容

  • 社区活跃

img

函数即服务

服务器准备

想要使用自建OpenFaaS,首先你需要一台轻量应用服务器,镜像直接选择 OpenFaaS 1.0.0:

image-20221115112233962

购买完成后进入产品控制台,找到已经创建的实例,在详情页-应用管理中能够看到如下信息:

image-20221115112337455

或者你已经拥有了一台轻量应用服务器,那么只需要在重装系统时选择 OpenFaaS 1.0.0 镜像即可~

此刻,在确保服务器正常运行的情况下,便可以通过应用管理页面提供的访问地址访问OpenFaaS 1.0.0管理后台,获取密码请在控制台输入命令:

 cat ~lighthouse/credentials.txt

image-20221115112733766

image-20221115112936763

登录之后我们可以看到官方提供了一些示例Function,点击Deploy New Function即可查看

image-20221115120321914

点击 deploy 之后等待状态 ready 之后就可以进行使用了,点击 invoke 进行调用,这个 function 是用来获取主机信息的。

image-20221115120433132

构建自己的Function

首先登录到服务器,安装OpenFaaS提供的命令行工具:

 $ curl -sSL https://cli.openfaas.com | sudo sh

image-20221115121035053

faas-cli 基础命令

 # 最新模板下载到本地
 faas-cli template pull
 # 查询 openfaas 的模板列表
 faas-cli new --list
 # 创建模板函数
 # 执行以下命令即可创建函数,add是函数名,python是语言类型
 faas-cli new qdfaas --lang python

image-20221115121521144

说明: 当前目录下,产生名为qdfaas的文件夹,以及名为qdfaas.yml的文件; qdfaas.yml 内容如下:

image-20221115121629461

进入qdfaas文件夹,看到faas-cli帮我们生成的源码文件handler.py,默认代码:

 def handle(req):
     """handle a request to the function
     Args:
         req (str): request body
     """
 
     return req

可以改成自己需要的函数,构成服务。

我们这里使用一个普通的函数来构建:

 def handle(req):
     array = req.replace('n', '').split(',')
     num = 0
     for a in array:
         num -= int(a)
     return num

构建函数

完成函数后,使用以下命令构建函数。

 faas-cli build -f qdfaas.yml --shrinkwrap

构建成功后会看到目录内多出了 build 文件夹。

image-20221115123346146

在本地构建Docker镜像之前要记得先登录,博主就是一直报错,后来才发现需要登录:

 sudo cat /var/lib/faasd/secrets/basic-auth-password | faas-cli login -s

image-20221115123937991

切换到目录:

 cd build/openfaas

打包Docker:

 nerdctl build --namespace openfaas-fn -t qdfaas:latest .

image-20221115124621251

查看镜像是不是刚刚构建的:

 nerdctl --namespace openfaas-fn image ls

image-20221115124745749

部署函数

执行部署命令faas-cli deploy -f qdfaas.yml,控制台会提示部署成功,还会给出URL:

 faas-cli deploy -f qdfaas.yml

image-20221115125626548

此时登录管理页面,可以看到新增的函数,也可以在页面上验证功能调用是否正常

image-20221115130738209

最后

如果喜欢使用OpenFaas的读者比较多的话,博主会抽时间写一篇如何利用OpenFaaS函数生成封面图的文章,感谢大家的支持!

-> 加入科技玩家交流群组:点击加入 注意:
1.文中二维码和链接可能带有邀请性质,请各位玩家自行抉择。
2.请勿通过链接填写qq号与密码、银行卡号与密码等个人隐私信息。
3.禁止纯拉人头,拉app注册等信息,发现必小黑屋。
4.同一种信息仅发一次,多发会被删除。
5.文章中源码或APP等,无法保证其绝对安全,需自行辨别。
6.文章关联方不想展示也可以微信站长“socutesheep”删除。
本文由 @星橙 发布。如若转载,请注明出处: 科技玩家 » 函数即服务,一步到位!

给TA买糖
共{{data.count}}人
人已买糖
教程玩家投稿

cookie获取通用(京东,美团,饿了么等等)(电脑版)(ck登录网页)

2022-11-15 17:11:31

教程玩家投稿

华为悦盒EC6108V9C刷机

2022-11-15 17:55:29

7 条回复 A文章作者 M管理员
贴心提醒
请认真对待作者付出,勿发表无意义言论,触发过滤规则的评论将无法提交,包含敏感词的评论会自动变成待审核状态哦。
  1. 亦云

    打卡升级

  2. LAzySheep

    现在你们写的我都看不懂了。

  3. 辣条

    额 我好像也没看懂,,,

  4. ◇尘埃灬

    不懂我们的使用场景了

  5. 星橙

    代替腾某云serverless(buhsi😁

  6. 𐃍

    打卡升级

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索