最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Serverless 初探

    正文概述 掘金(宿雨i)   2021-02-20   577

    Serverless

    为什么说 Serverless 是 Faas + Baas 的组合?

    Fass

    首先如果想要实现一个接口,想让这个接口对外提供服务,就需要一台服务器进行部署我们的代码,既然 Serverless 不需要关心服务器,那就需要 Fass

    FaaS(Function as a Service)本质上是一个函数运行平台,大多 FaaS 产品都支持 Node.js、Python、Java等编程语言,你可以选择你喜欢的编程语言编写函数并运行。函数运行时,你对底层的服务器是无感知的,FaaS 产品会负责资源的调度和运维,这是它的特点之一,不用运维

    另外,FaaS 中的函数也不是持续运行的,而是通过事件进行触发,比如 HTTP 事件、消息事件等,产生事件的源头叫触发器,FaaS 平台会集成这些触发器,我们直接用就行,这是 FaaS 的第二个特点,事件驱动

    FaaS 的第三个特点是按量付费。 FaaS 产品的收费方式,都是按照函数执行次数和执行时消耗的 CPU、内存等资源进行计费的。除此之外,FaaS 在运行函数的时候,会根据并发量自动生成多个函数实例,并且并发理论是没有上限的,这是它的第四个特点,弹性伸缩

    Bass

    BaaS 本质上就是把后端功能封装起来,以接口的形式提供服务在 Serverless 架构中,常见的 BaaS 产品有 AWS DynamoDB、阿里云表格存储、消息中间件等,这些服务都可以通过 API 进行访问。


    其它 ass

    • 最初云厂商都是卖硬件,AWS 的 EC2、阿里云 ECS、Azure Virtual Machines,这种云计算形态也被叫作 IaaS ( Infrastructure as a Service ) (基础设施即服务)

    • 随着业务形态发展,云厂商发现可以抽象出一些通用的平台,比如中间件、数据库等,于是就把这些功能做成服务,也放在云上去卖,这就是 PaaS ( Platform as a Service )(平台即服务)

    • SaaS ( Software as a Service ) 的话,是厂商直接提供软件服务,用户花钱购买使用,也就不用自己设计网站架构了

    • FaaS 提供了运行函数代码的能力,并且具有自动弹性伸缩。基于 FaaS,我们应用的组成就不再是集众多功能于一身的集合体,而是一个个独立的函数。每个函数实现各自的业务逻辑,由这些函数组成复杂的应用。

    • BaaS 是将后端能力封装成了服务,并以接口的形式提供服务。比如数据库、文件存储等。通过 BaaS 平台的接口,我们运行在 FaaS 中的函数就能调用各种后端服务,进而以更低开发成本实现复杂的业务逻辑。


    Serverless 的优缺点

    优点

    不用运维、弹性伸缩、节省成本、开发简单、降低风险、易于扩展

    缺点

    • 依赖第三方服务
    • 底层硬件的多样性
    • 应用性能瓶颈 => 冷启动
    • 函数通信效率低
    • 开发调试复杂

    函数生命周期:冷启动与热启动

    在 FaaS 平台中,函数默认是不运行的,也不会分配任何资源。甚至 FaaS 中都不会保存函数代码。只有当 FaaS 接收到触发器的事件后,才会启动并运行函数。整个函数的运行过程可以分为四个阶段。

    1. 下载代码: FaaS 平台本身不会存储代码,而是将代码放在对象存储中,需要执行函数的时候,再从对象存储中将函数代码下载下来并解压,因此 FaaS 平台一般都会对代码包的大小进行限制,通常代码包不能超过 50MB。
    2. 启动容器: 代码下载完成后,FaaS 会根据函数的配置,启动对应容器,FaaS 使用容器进行资源隔离。
    3. 初始化运行环境: 分析代码依赖、执行用户初始化逻辑、初始化入口函数之外的代码等
    4. 运行代码: 调用入口函数执行代码。

    当函数第一次执行时,会经过完整的四个步骤,前三个过程统称为“冷启动”,最后一步称为 “热启动”。

    编写简单的 Serverless 应用

    这里我们使用阿里云的 Serverless 做演示,其他平台有些小的差异,但本质都是一致的。

    开发 Serverless 应用的步骤

    我们编写一个简单的 Serverless 应用,这个应用的功能是: 提供一个所有人都可访问的接口,并且能够根据请求参数进行响应(比如请求 example.com/?name=Serve… 返回 Hello, Serverless )。 你可以直接点击 新建函数 进入函数计算控制台,新建一个函数。新建一个 HTTP 函数,函数创建成功后进入到代码编辑页面。

    Serverless 初探

    代码如下:

    exports.handler = (request, response, context) => {
        // 从 request 中获取
        const { name } = request.queries;
        // 设置 HTTP 响应
        response.setStatusCode(200);
        response.setHeader("Content-Type", "application/json");
        response.send(JSON.stringify({ message: `Hello, ${name}` }));
     }
    

    本质上这就是一个函数,函数有三个参数:

    • request 是请求信息,你可以从中获取到请求参数; • response 是响应对象,你可以用它来设置 HTTP 响应数据; • context 是函数上下文

    编写完之后保存,会在下面看到请求的测试地址。输入对应的参数进行调试,发现右面可以正常返回数据,说明我们简单的 Serverless 应用编写完成了。

    Serverless 初探

    后续

    至此,一个简单的 Serverless 应用就实现了,相对于传统的方式,这种方式对于前端来讲,完全摆脱了运维的成本,后面再带大家实现一个简单的登录注册,加深对 Serverless 的理解。


    起源地下载网 » Serverless 初探

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元