在 Serverless 出现之前,我们要部署这样一个应用的流程。
首先为了运行我们的应用,我们要在服务端构建代码的运行环境:我们要购买虚拟机服务,初始化虚拟机运行环境,安装我们需要的应用运行环境,尽量和本地开发环境保持一致;
紧接着为了让用户能够访问我们刚刚启动的应用,我们需要购买域名,用虚拟机 IP 注册域名;
配置 Nginx,启动 Nginx;
最后我们还需要上传应用代码,启动应用。
纯FaaS 应用调用链路由函数触发器、函数服务和函数代码三部分组成,它们分别替代了传统服务端运维的负载均衡 & 反向代理,服务器 & 应用运行环境,应用代码部署。
之前需要在服务端构建代码的运行环境,而 FaaS 应用将这一步抽象为函数服务;
之前需要负载均衡和反向代理,而 FaaS 应用将这一步抽象为 HTTP 函数触发器;
之前需要上传代码和启动应用,而 FaaS 应用将这一步抽象为函数代码。
当用户第一次访问 HTTP 函数触发器时,函数触发器就会 Hold 住用户的 HTTP 请求,并产生一个 HTTP Request 事件通知函数服务。紧接着函数服务就会检查有没有闲置的函数实例;
如果没有函数实例,就去函数代码仓库中拉取你的代码;初始化并启动一个函数实例,执行这个函数,传入这个 HTTP Request 对象作为函数的参数,执行函数。再进一步,函数执行的结果 HTTP Response 返回函数触发器,函数触发器再将结果返回给等待的用户客户端。纯 FaaS 默认创建了 3 个服务。
第一个"GreetingServiceGreetingFunctionhttpTrigger"函数触发器,函数触发器是所有请求的统一入口,当请求发生时,它会触发事件通知函数服务,并且等待函数服务执行返回后,将结果返回给等待的请求。
第二个"GreetingService"函数服务,当函数触发器通知的“事件”到来,它会查看当前有没有闲置的函数实例,如果有则调用函数实例处理;如果没有,则会创建函数实例,等实例创建完毕后,再调用函数实例处理事件。
第三个"GreetingServiceGreetingFunction"函数代码,“函数服务”在第一次实例化函数时,就会从这个代码仓库中拉取代码,并构建函数实例。
标签:触发器,函数,代码,逻辑,实例,应用,运行,FaaS From: https://www.cnblogs.com/muzinan110/p/17055966.html