OpenFaaS介绍
FaaS
云计算时代出现了大量XaaS形式的概念,从IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、SaaS(Software as a Service)到容器云引领的CaaS(Containers as a Service),再到火热的微服务架构,它们都在试着将各种软、硬件资源等抽象为一种服务提供给开发者使用,让他们不再担心基础设施、资源需求、中间件等等,在减轻心智负担的同时更好地专注于业务。随着技术架构的演进,FaaS(Function as a Service)逐渐兴起,它往往和无服务架构(Serverless Architecture)一同被提起。
Serverless可以看作是比微服务架构更细粒度的架构模式,即FaaS,一个函数相当于一个服务,Lambda也是FaaS的典型代表,它允许用户仅仅上传代码而无需提供和管理服务器,由FaaS框架负责代码的执行、高可用扩展和其他Web应用直接调用等。
FaaS拥有下面的特点:
-
FaaS里的应用逻辑单元都可以看作是一个函数,开发人员只关注在函数中实现业务逻辑,而不用提前考虑性能优化,让工作聚焦在这个函数里,而非应用整体。
-
FaaS是无状态的,无状态意味着本地内存、磁盘里的数据无法被后续的操作所使用。大部分的状态需要依赖于外部存储,比如数据库、网络存储等。
-
FaaS函数启动延时受很多因素的干扰。如果采用了JS或Python实现了函数,它的启动时间一般不会超过10~100毫秒。但如果是实现在JVM上的函数,当遇到突发的大流量或者调用间隔过长的情况,启动时间会显著变长。
-
FaaS函数可以自动伸缩,在流量高峰期时自动扩容,流量低峰期时通常保持服务可用性即可。
-
FaaS需要借助于API Gateway将请求的路由和对应的处理函数进行映射,并将响应结果代理返回给调用方。
FaaS优势:
-
减少开支
通过购买共享的基础设施,同时减少了花费在运维上的人力成本,最终减少了开支。
-
减轻负担
不再需要重复造轮子,需要什么功能直接集成调用即可,也无需考虑整体的性能,只专注于业务代码的实现。
-
易于扩展
云上提供了自动的弹性扩展,用了多少计算资源,就购买多少,完全按需付费。
-
简化管理
自动化的弹性扩展、减少了打包和部署的复杂度、可以快速推向市场,这些都让管理变得简单高效。
-
环保计算
即使在云的环境上,仍习惯于购买多余的服务器,最终导致空闲。Serverless杜绝了这种情况。
OpenFaaS
OpenFaaS是Serverless的一个框架,开发者可以很容易的将事件驱动的函数或者微服务部署到Kubernetes。
OpenFaaS环境:
- Docker
- Kubernetes
OpenFaaS架构功能:
- 网关
- Watchdog
- Auto-scaling
- Metrics
- FaaS Provider
- Logs Provider
OpenFaaS技术支持:
-
支持多种语言,如Node、Python、Java等
-
提供事件模板,如HTTP事件、MQTT Connector
-
支持自定义FaaS模板,例如自定义SpringBoot模板
-
打包、推送、部署docker镜像
OpenFaaS附加值:
OpenFaaS基于Kubernetes,可以看作OpenFaaS除了自身功能外,继承了Kubernetes大部分的功能,尤其是自动伸缩、资源管理等功能。针对这些功能,可以从业务上去映射自动伸缩、资源管理,在代码成面也做一层管控,例如:
-
租户管理
一个用户或组织是一个租户,租户间的数据是隔离的,但是共享公共资源
-
实例管理
每个租户可以申请多个实例,每个实例对应一个Kubernetes的namespace
-
配额管理
每个实例要申请资源,包括cpu、memory等资源,资源不足时,租户需要重新申请额外资源
-
部署代码
代码部署和代码版本控制
OpenFaaS网关
官网:OpenFaaS网关介绍
OpenFaaS Watchdog
官网:Watchdog介绍
Watchdog是OpenFaaS启动、监听函数的插件,它是有Go-lang语言开发的。它内嵌了一个Http Server,支持并发请求、超时时间、健康检查等功能。它在OpenFaas网关和你自定义代码的中间,相当于一个代理。
Classic Watchdog
watchdog为每个请求fork一个进程,在进程中执行你的低代码。
调用流程如下:
- 用户请求OpenFaaS网关
- OpenFaaS网关转发请求到Watchdog
- Watchdog启动一个**进程**执行你的低代码,例如:你的代码是Node,Watchdog的调用相当于执行node index.js
of-watchdog
of-watchdog改进了classic watchdog fork进程的缺点,使进程可以重复使用,提高吞吐量,消除fork的延迟。这个模式适用于生产环境,并且它是OpenFaaS的github的一部分。
它与Classic Watchdog的区别可以这样理解(基于Node和自定义Springboot实现,我才说可以这样理解,其他语言环境我没有尝试):OpenFaaS(模板)帮你启动一个类似于Web容器,或者你自定义启动一个Web容器(Tomcat/SpringBoot),of-watchdog将请求转发到Web容器中。
OpenFaaS template
GitHub:OpenFaaS提供的模板
OpenFaaS提供了多种模板,直接使用模板做quickstart,也可以自定义模板。
模板文件中,我们关注最多的是function文件夹,这个文件夹是放我们的低代码的。替换function文件夹内容,可以在faas-cli new之前,或者是faas-cli new之后。
当然,其他模板文件也可以按需修改。
Node模板
从上面的截图可以看出来,node模板分了三个文件夹,所以它提供了三种不同的实现方式(node14的入口index.js,大致扫了一眼,是一样的,至于有什么新功能迭代,我没有深追)。
详细的内容可以查看一下各个模板的内容。
node
这种方式可以认为是每个请求都是一个进程,如果没有记错的话,这个是搭配Classic Watchdog使用的。我也是从这种模式转变到of-watchdog的(因为ID昂是of-watchdog还不完整)。
node12
这种方式,在index.js模板文件中可以看到,它使用了node的express框架,相当于启动了一个Web容器。
Java模板
Java模板中的Dockerfile使用的都是java11,你使用时,尽量改成自己的版本。
上述的java11-vert-x貌似是和异步相关的,java11是com.sun.net.httpserver.HttpServer构建一个简单的Web服务,局限性很大。
java11部署的反编译启动文件如下:
相关文章:
OpenFaaS介绍
FaaS 云计算时代出现了大量XaaS形式的概念,从IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、SaaS(Software as a Service)到容器云引领的CaaS(Containers as a Service),再到火热的微服务架构,它们都在试着将各种软、硬…...
【算法设计与分析】STL容器、递归算法、分治法、蛮力法、回溯法、分支限界法、贪心法、动态规划;各类算法代码汇总
文章目录前言一、STL容器二、递归算法三、分治法四、蛮力法五、回溯法六、分支限界法七、贪心法八、动态规划前言 本篇共为8类算法(STL容器、递归算法、分治法、蛮力法、回溯法、分支限界法、贪心法、动态规划),则各取每类算法中的几例经典示例进行展示。 一、STL容…...
vue初识
第一次接触vue,前端的html,css,jquery,js学习也有段时间了,就照着B站的视频简单看了一些,了解了一些简单的用法,这边做一个记录。 官网 工具:使用VSCode以及Live Server插件(能够实时预览) 第…...
火山引擎入选《2022 爱分析 · DataOps 厂商全景报告》,旗下 DataLeap 产品能力获认可
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 2 月 9 日,国内领先的数字化市场研究与咨询机构爱分析发布了《2022 爱分析DataOps 厂商全景报告》(以下简称报告),报…...
java-spring_bean的生命周期
生命周期:从创建到消亡的完整过程初始化容器 1. 创建对象(内存分配 ) 2. 执行构造方法 3. 执行属性注入(set操作) 4. 执行bean初始化方法 使用bean 执行业务操作 关闭/销毁容器 1.执行bean销毁方法 bean销毁时机 容…...
微服务相关概念
一、谈谈你对微服务的理解,微服务有哪些优缺点?微服务是由Martin Fowler大师提出的。微服务是一种架构风格,通过将大型的单体应用划分为比较小的服务单元,从而降低整个系统的复杂度。优点:1、服务部署更灵活࿱…...
论文解读:(TransA)TransA: An Adaptive Approach for Knowledge Graph Embedding
简介 先前的知识表示方法:TransE、TransH、TransR、TransD、TranSparse等。的损失函数仅单纯的考虑hrh rhr和ttt在某个语义空间的欧氏距离,认为只要欧式距离最小,就认为h和th和th和t的关系为r。显然这种度量指标过于简单,虽然先…...
js将数字转十进制+十六进制(联动el-ui下拉选择框)
十进制与十六进制的整数转化一、十进制转十六进制二、十六进制转十进制三、联动demo一、十进制转十六进制 正则表达式: /^([0-9]||([1-9][0-9]{0,}))$/解析:[0-9]代表个位数,([1-9][0-9]{0,})代表十位及以上 二、十六进制转十进制 正则表达…...
关于RedissonLock的一些所思
关于RedissonClient.getLock() 我们一般的使用Redisson的方式就是: RLock myLock redissonClient.getLock("my_order");//myLock.lock();//myLock.tryLock();就上面的例子里,如果某个线程已经拿到了my_order的锁,那别的线程调用m…...
C++:倒牛奶问题
文章目录题目一、输入二、输出三、思路代码题目 农业,尤其是生产牛奶,是一个竞争激烈的行业。Farmer John发现如果他不在牛奶生产工艺上有所创新,他的乳制品生意可能就会受到重创! 幸运的是,Farmer John想出了一个好主…...
MySQL8.x group_by报错的4种解决方法
在我们使用MySQL的时候总是会遇到各种各样的报错,让人头痛不已。其中有一种报错,sql_modeonly_full_group_by,十分常见,每次都是老长的一串出现,然后带走你所有的好心情,如:LIMIT 0, 1000 Error…...
具有非线性动态行为的多车辆列队行驶问题的基于强化学习的方法
论文地址: Reinforcement Learning Based Approach for Multi-Vehicle Platooning Problem with Nonlinear Dynamic Behavior 摘要 协同智能交通系统领域的最新研究方向之一是车辆编队。研究人员专注于通过传统控制策略以及最先进的深度强化学习 (RL) 方法解决自动…...
TrueNas篇-硬盘直通
硬盘直通 在做硬盘直通之前,在trueNas(或者其他虚拟机)内是检测不到安装的硬盘的。 在pve节点查看硬盘信息 打开pve的shell控制台 输入下面的命令查看硬盘信息: ls -l /dev/disk/by-id/该命令会显示出实际所有的硬盘设备信息,其中ata代…...
手机子品牌的“性能战事”:一场殊途同归的大混战
在智能手机行业进入存量市场后,竞争更加白热化。当各国产手机品牌集体冲高端,旗下子品牌们也正厮杀正酣,显现出刀光剑影。处理器、屏幕、内存、价格等各方面无不互相对标,激烈程度并不亚于高端之争。源于OPPO的中端手机品牌realme…...
dockerfile自定义镜像安装jdk8,nginx,后端jar包和前端静态文件,并启动容器访问
dockerfile自定义镜像安装jdk8,nginx,后端jar包和前端静态文件,并启动容器访问简介centos7系统里面我准备的服务如下:5gsignplay-web静态文件内容如下:nginx.conf配置文件内容如下:Dockerfile内容如下:run.sh启动脚本内容如下:制作镜像并启动访问简介 通过用docker…...
MongoDB 全文检索
MongoDB 全文检索 全文检索对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。 这个过程类似于通过字典中的检索字表查字的过…...
JS中声明变量,使用 var、let、const的区别
一、var 的使用 1.1、var 的作用域 1、var可以在全局范围声明或函数/局部范围内声明。当在最外层函数的外部声明var变量时,作用域是全局的。这意味着在最外层函数的外部用var声明的任何变量都可以在windows中使用。 2、当在函数中声明var时,作用域是局…...
汽车改装避坑指南:大尾翼
今天给大家讲一个改装的误区:大尾翼 很多车友看到一些汽车加了大尾翼,非常的好看,就想给自己的车也加装一个。 那你有没有想过,尾翼这东西你真的需要吗? 赛车为什么加尾翼?尾翼主要是给车尾部的一个压低提供…...
【Unity资源下载】POLYGON Dungeon Realms - Low Poly 3D Art by Synty
$149.99 Synty Studios 一个史诗般的低多边形资产包,包括人物、道具、武器和环境资产,用于创建一个以奇幻为主题的多边形风格游戏。 模块化的部分很容易在各种组合中拼凑起来。 包包含超过1,118个详细预制件。 主要特点 ◼ ◼ 完全模块化的地下城!包…...
知识汇总:Python办公自动化应该学习哪些内容
当前python自动化越来越受到欢迎,python一度成为了加班族的福音。还有大部分人想利用python自动化来简化工作,不知道从何处下手,所以,这里整理了一下python自动化过程中的各种办公场景以及需要用到的python知识点。 Excel办公自动…...
软件架构知识5-架构设计流程
一、识别复杂度 举例:设计一个亿级用户平台设计,直接对标腾讯的 QQ,按照腾讯 QQ的用户量级和功能复杂度进行设计,高性能、高可用、可扩展、安全等技术一应俱全,一开始就设计出了 40 多个子系统,然后投入大…...
【银河麒麟V10操作系统】修改屏幕分辨率的方法
文章目录前言系统概述方法1:使用命令行修改方法2:写文件修改方法3:界面端修改的方法前言 本文记录了银河麒麟V10系统修改分辨率的方法。 使用命令行修改写文件修改界面端修改的方法 系统概述 方法1:使用命令行修改 打开终端&am…...
pdf生成为二维码
当今数字时代,人们越来越依赖在线工具来处理各种任务,比如合并、拆分和压缩PDF等。Mai File就是这样一个在线工具,它可以将PDF文件转换成在线链接,方便您和他人轻松地查看和共享文件。 Mai File的使用非常简单,您只需…...
Yaklang websocket劫持教程
背景 随着Web应用的发展与动态网页的普及,越来越多的场景需要数据动态刷新功能。在早期时,我们通常使用轮询的方式(即客户端每隔一段时间询问一次服务器)来实现,但是这种实现方式缺点很明显: 大量请求实际上是无效的,这导致了大量…...
基于AIOT技术的智慧校园空调集中管控系统设计与实现
毕业论文(设计)题 目 基于AIOT技术的智慧校园空调集中管控系统设计与实现指导老师 XXXX 专业班级 电子商务2XXXX 姓 名 XXXX 学 号 20XXXXXXXXX 20XX年XX月XX日摘要近年来,随着物联网技术和人工智能技术的快速发展,智慧校园逐渐…...
【每日一题】 将一句话单词倒置,标点不倒置
用C语言将一句话的单词倒置,标点不倒置。 比如输入: i like shanghai. 输出得到: shanghai. like i 这道题目有很多种做法,既可以用递归,也可以分成两部分函数来写,本文就详细来讲解分装为两个函数的做法。…...
宽刈幅干涉雷达高度计SWOT(Surface Water and Ocean Topography)卫星进展(待完善)
> 以下信息搬运自SWOT官方网站等部分文献资料,如有侵权请联系:sunmingzhismz163.com > 排版、参考文献、部分章节待完善 > 2023.02.17.22:00 初稿概况 2022年12月16日地表水与海洋地形卫星SWOT (Surface Water and Ocean Topography)在加利福尼…...
openjdk源码==类加载过程
jdk\src\share\bin\main.c main JLI_Launch jdk\src\share\bin\java.c JLI_Launch jdk\src\solaris\bin\java_md_solinux.c JVMInit ContinueInNewThread JavaMain InitializeJVM jdk\src\share\bin\java.h CreateJavaVM 调用JNI hotspot\src\share\vm\prims\j…...
vue2的后台管理系统 迁移到 vue3后台管理系统
重构的流程1.新建项目,确定脚手架版本2.项目整体迁移3.重构路由,axios,element-plus等项目所需要的依赖4.迁移组件内容(需要的配置项移步到5目录and6目录)4-1.Login页面4-2. Home页4-3.Students管理内部的页面4-3-1.studentList(学生列表)4-3-2.InfoList(信息列表)4-3-3.InfoLi…...
2023年美赛F题
关键点1.绿色GDP(GGDP)是否比传统GDP更好好的衡量标准?2.如果GGDP成为经济健康的主要量标准,可能会对环境产生什么影响?3建立一个简单的模型,估计GGDP取代GDP作为经济健康的主要衡量标准,对减缓气候变化产生的影响。4.GGDP取代GDP可能会遇到…...
丰都网站建设案例/电商运营工资大概多少
创建好看的Android布局是个不小的挑战,当你花了数小时调整好它们适应多种设备后,你通常不想再重新调整,但笨重的嵌套布局效率往往非常低下,幸运的是,在Android SDK中有一个工具可以帮助你优化布局,以减少内…...
wordpress相册插件nextgen gallery/网络推广应该怎么做啊
文章目录1、什么是生成器2、三元表达式3、列表解析4、生成器的表现形式4.1、生成器函数4.2、生成器表达式5、生成器只能被遍历一次6、生成器send用法7、使用迭代器协议访问对象的内置函数1、什么是生成器 在 Python 中,使用了 yield 的函数被称为生成器(…...
网站调试/湖南关键词排名推广
概览一、C语言陷阱与缺陷之词法陷阱不同于比较运算误写为赋值运算while(c || c/t||c/n) cgetc(f);如上例代码,原来应该为c 为判断,但是改为赋值语句后就变为死循环一直执行下去。赋值运算写成比较运算if(filedescopen(agrv[i],0)<0) error本代码原来应该是&#…...
b2b平台免费推广/seo培训师
01PDF下载识别下方二维码,回复“苏宁”,即可下载。02PPT预览...
黄页大全18勿看2000网站/员工培训内容
天边最初的一抹光亮黎明时分的到来,是由天边最初的一抹光亮标识的。但这光亮仅仅是在天际线附近, 甚至满天的星斗还在与它争辉。在这一时段拍摄,除了天边一道亮光外,其他的地方的光线还是非常暗的。此时拍摄,一定需要长…...
兰州做家教去哪个网站比较好/网络推广渠道
职场的新人做事要有自己的原则,那么职场新人如何把握原则呢?一起来和小编看看吧。尊重原则:职场新人新到职场遭到“欺生”很常见,如果掌握了处事技巧这就没问题了,小峰在佛山觅得一份新的文案策划职位,新公…...