EasyFaaS一个无状态且高性能的函数计算服务引擎

EasyFaaS一个无状态且高性能的函数计算服务引擎

2022-09-14 0 790
资源编号 38551 最近更新 2022-09-14
¥ 0人民币 升级VIP
立即下载 注意事项
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 模板修改 源码安装

本期推荐的EasyFaaS是一个依赖轻、适配性强、资源占用少、无状态且高性能的函数计算服务引擎。

简介特点

  • 依赖轻:EasyFaaS只依赖Linux内核,不强制依赖Docker、Kubernetes等外部服务
  • 适配性强:EasyFaaS可以运行在多种系统环境,包括Docker、Kubernetes及裸机等
  • 资源占用少:模块少,服务系统模块占用更小
  • 无状态:每个EasyFaaS Pod本身无状态且内部自治
  • 高性能:调度链路更短,更小的系统开销和更优的性能

适用于

  • 边缘计算-Edge
  • 物联网-IoT
  • CICD
  • 私有化
  • CDN

快速开始

基于Linux(内核4.0+)、提前安装docker, 提供两种方式供开发者快速开始:

  • 方式一:使用all-in-one方式运行
  • 方式二:使用docker-compose运行
  • 方式三:编译打包部署

方式一:使用all-in-one方式运行

编译

编译全部模块 备注:如果您是在linux环境或者不需要对单个模块进行编译,只需要运行1.1的命令即可

$ make

为其它平台交叉编译:

$ KUN_BUILD_PLATFORMS="linux/amd64" make

只编译某一个模块:

$ make WHAT=./pkg/controller

打包

$ scripts/build-image.sh -h
Usage: scripts/build-image.sh [OPTIONS]
  -h  --help      帮助
  -m= --module=   模块名称
  -i= --image=    镜像名称
  -t= --tag=      镜像标签
  -e= --env=      部署环境(镜像仓库配置)

打包all-in-one镜像,其中会包含controller组件、 funclet组件、 stubs组件。需要注意的runtime目前不开源,直接拉取镜像即可,执行脚本打包:

$ scripts/build-image.sh -m=one -i=easyfaas -t=dev

如果您需要发布打包好的镜像,需要指定REGISTRY,如:

$REGISTRY=registry.baidubce.com/<your_namespace>/ ./scripts/build-image.sh -m=one -i=easyfaas -t=dev

上传镜像

如果在本机,否则需要上传镜像

docker push [OPTIONS] NAME[:TAG]
如:
docker push registry.baidubce.com/<your_namespace>/<your_image_name>:<your_image_tag>

启动服务

export faasPath=/<your_path_prefix>/easyfaas/faas

#runner-runtime请直接下载镜像
docker run -td -e WITHRUNNER=1 -e WITHNODEJS10=1  -e WITHNODEJS12=1 -e WITHPYTHON3=1 --name runner-runtime -v ${faasPath}/runtime:/var/faas/runtime -v ${faasPath}/runner:/var/faas/runner registry.baidubce.com/easyfaas-public/runner-runtime:demo1.0

# 启动all-in-one服务
docker run -td --privileged -v ${faasPath}/runner:/var/faas/runner -v ${faasPath}/runtime:/var/faas/runtime -v ${faasPath}/data:/var/faas/runner-data --name easyfaas registry.baidubce.com/easyfaas-public/all-in-one:demo1.0

操作运行

安装运行完成后,执行如下命令进入到容器内:

$ docker exec -it easyfaas bash

方式二:使用docker-compose在本地运行easyfaas服务

确保本地Docker服务正常运行,因easyfaas服务底层依赖cgroup/loop设备等linux底层特性建议优先使用Linux系统。

easyfaas组件镜像

如总体架构图所述,easyfaas由4个组件构成,分别是 controller组件, funclet组件, runner-runtime组件,以及stubs模块构建的本地代码仓库组件func-registry。

您可以直接使用easyfaas发布的公共镜像,如果您本机无法访问公网, 可在能访问外网环境的服务器上下载并存储镜像文件到tar文件中,再将tar文件load至无公网的服务器。

运行easyfaas服务

主要配置在./scripts/docker-compose/compose-local/.env 文件,其中

  • CONTROLLER_EXPORT_PORT: controller组件暴露的服务端口
  • REGISTRY_EXPORT_PORT: mock本地函数代码仓库服务组件的服务端口
  • FUNCTION_DATA_DIR: 本地函数代码目录
  • easyfaas_REPO: 镜像仓库repo
  • CONTROLLER_TAG: controller组件镜像tag, 完整镜像ID为{easyfaas_REPO}/controller:{{easyfaas_REPO}/controller:{CONTROLLER_TAG}
  • FUNCLET_TAG: funclet组件镜像tag, 完整镜像ID为{easyfaas_REPO}/mini-funclet:{{easyfaas_REPO}/mini-funclet:{CONTROLLER_TAG}
  • RUNTIME_TAG: runner-runtime组件镜像tag, 完整镜像ID为{easyfaas_REPO}/runner-runtime:{{easyfaas_REPO}/runner-runtime:{CONTROLLER_TAG}
  • REGISTRY_TAG: 本地mock函数仓库组件tag, 完整镜像ID为{easyfaas_REPO}//func-registry:{{easyfaas_REPO}//func-registry:{CONTROLLER_TAG}
# env文件配置 示例
$ cat ./scripts/docker-compose/compose-local/.env 
CONTROLLER_EXPORT_PORT=8899
REGISTRY_EXPORT_PORT=8002
FUNCTION_DATA_DIR=/tmp/funcData
easyfaas_REPO=registry.baidubce.com/easyfaas-public
CONTROLLER_TAG=demo1.0
FUNCLET_TAG=demo1.0
RUNTIME_TAG=demo1.0
REGISTRY_TAG=demo1.0

启动服务

运行如下命令启动服务,并运行docker ps查看组件是否正确运行: 其中controller组件容器,funclet组件容器及func-registry组件容器为常驻容器, 查看容器是否正常运行

# 启动服务 
$ cd ./scripts/docker-compose/compose-local/
$ sh app_control.sh start 

# 检查服务
$ docker ps 
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS               NAMES
5bec1b3fd3e4        controller:demo1.0        "./controller --maxproc…" 3 days ago          Up 3 days                               minikun_minikun_1
8b6b1f6d2b1d        mini-funclet:demo1.0      "./funclet --logtost…"    3 days ago          Up 3 days                               minikun_funclet_1
5082b7249d28        func-registry:demo1.0     "/stubs --port=8002 …"    3 days ago          Up 3 days                               minikun_registry_1

 $ 查看服务是否正常运行 

核心功能

EasyFaaS一个无状态且高性能的函数计算服务引擎

技术架构

EasyFaaS一个无状态且高性能的函数计算服务引擎

总体架构图

核心模块说明

controller

负责流量调度及容器池状态管理。

  • 实现容器调度功能。
  • 支持配置函数级别的并发。
  • 支持容器状态管理,按策略调度容器状态。
  • 支持健康检查,可以根据runtime的状态决定cooldown/reborn。

funclet

负责管理用户工作容器,包括基础容器资源及函数运行资源。

  • 容器管理:实现容器的init/warmup/reset流程。
  • 网络管理:实现容器网络相关功能,合理管理网络资源。
  • 挂载管理:实现用户容器的动态挂载,并定期回收用户容器的挂载目录。
  • 进程管理:需妥善管理用户容器产生的子进程,处理异常退出的子进程。
  • 资源容量管理:实现用户工作容器的内存资源动态调整。

runner-runtime

runner负责管理用户函数运行时,runtime支持各开发语言运行时,目前该组件当前仅提供容器镜像

资源下载此资源为免费资源立即下载

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 免费源码 EasyFaaS一个无状态且高性能的函数计算服务引擎 https://www.7claw.com/38551.html

分享免费的开源源码

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、七爪会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、七爪无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在七爪上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于七爪介入快速处理。
查看详情
  • 1、七爪作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与互站无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务