近些年来,传统的 IaaS、PaaS 已经无法满足人们对资源调度的需求了。各大云厂商相继开始推出自家的 Serverless 服务。Serverless 顾名思义,它是“无服务器”服务器。不过并不是本质上的不需要服务器,而是面向开发者(客户)无需关心底层服务器资源的调度。只需要利用本身业务代码即可完成服务的运行。

Serverless 是近些年的一个发展趋势,它的发展离不开 FaaS 与 BaaS。这里不是着重讨论 Serverless 架构的,而是尝试利用 Node.js 来实现一个最简易的 FaaS 平台。顺便还能对 JavaScript 语言本身做进一步更深的研究。

Serverless 平台是基于函数作为运行单位的,在不同的函数被调用时,为了确保各个函数的安全性,同时避免它们之间的互相干扰,平台需要具有良好的隔离性。这种隔离技术通常被称之为“沙箱”(Sandbox)。在 FaaS 服务器中,最普遍的隔离应该式基于 Docker 技术实现的容器级别隔离。它不同于传统虚拟机的完整虚拟化操作系统,而且也实现了安全性以及对系统资源的隔离。

但在这我们尝试实现一个最简易的 FaaS 服务,不需要利用上 Docker。基于进程的隔离会更加的轻便、灵活,虽然与容器的隔离性有一定差距。

环境搭建

这里利用 TypeScript 来对 JavaScript 做更严格的类型检查,并使用 ESlint + Prettier 等工具规范代码。

初始化环境:

yarn --init

添加一些开发必要工具:

yarn add typescript ts-node nodemon -D

以及对代码的规范:

yarn add eslint prettier eslint-plugin-prettier eslint-config-prettier @typescript-eslint/parser @typescript-eslint/eslint-plugin -D

当然不能忘了 Node 本身的 TypeScript lib。

yarn add @types/node -D

基础能力

Nodejs多进程 |

版权声明:本文为defectink原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/defectink/p/built-simply-faas.html