近两年来,Serverless 概念在开发者中交流的越来越多,主题分享呈现爆发趋势。有人说:Serverless 正在改变未来软件开发的模式和流程,它就是云计算的未来。

在一个应用中包含了多个功能,如订单创建、订单查询和订单修改等。应用数据存储在外部数据库中。数据库和应用一样,也部署在数据中心的主机上,由用户负责运维。

开发人员进行业务开发时,需要关心很多和服务器相关的服务端开发工作,比如存储和计算资源、缓存、消息服务、数据库,以及防止服务器被安全攻击,负载均衡和横向扩展能力,考虑服务器容灾稳定性等非专业逻辑的开发。这些服务器的运维和开发知识、经验极大地限制了开发者进行业务开发的效率。

传统的架构:

应用被部署在Serverless平台之上。应用的功能点变成若干个函数定义,部署于FaaS之中。数据仍然存放在后端数据库中。应用函数通过访问后端的数据库服务(BaaS)获取订单数据。

Serverless 场景下,客户端需要通过 API 网关 Baas 来访问函数 FaaS 服务,然后在通过函数计算做数据库链接实现数据库的写入和拉取。

在Serverless架构下。当用户完成应用开发后,软件应用将被部署到指定的运行环境,这个运行环境不再是具体的一台或多台服务器,而是支持Serverless的云计算平台。Serverless云计算平台保证该主机提供应用正常运行所需的计算资源。在访问量升高时,云计算平台动态地增加应用的部署实例。当应用空闲一段时间后,云计算平台自动将应用从主机中卸载,并回收资源。

Serverless服务架构:

相相同点:
1.两个应用都存在一个逻辑层,负责处理用户请求;
2.两个应用的数据都存储在应用外部的数据库中。
不同点:
1.Serverless架构的应用部署于Serverless平台之上,由Serverless平台提供运行所需的计算资源。
2.在Serverless架构下,由于应用的逻辑分散成了若干个函数,推荐通过API网关对这些函数逻辑进行统一的管控(如流量控制、安全管控、版本管理等)

详解Serverless:

无服务器计算是一种云计算执行模型,云厂商提供程序运行的服务器,并动态管理机器资源的分配。云厂商基于应用程序消耗的实际资源量进行定价,而不是用户预先购买的容量。

Serverless并不能按字面上理解为无服务器,而是说对应用开发者而言,不再需要操心大部分跟服务器相关的事务,比如应用运行环境配置、负载均衡、日志搜集、系统监控等,这些事情统统交给Serverless平台即可,应用开发者唯一需要做的就是编写应用代码,实现业务逻辑。

Serverless主要的两个特征是:免运维,按资源的使用量付费

目前业界的各类Serverless实现按功能而言,主要为应用服务提供了两个方面的支持:函数即服务(Function as a Service,FaaS)以及后台即服务(Backend as aService,BaaS)

那么下面来说说IaaS,PaaS,Saas,FaaS和BaaS

以做披萨生意为例,如果从买设备,制作,销售都是自己一个人做,未免会太过于劳累,所以需要别人的服务来让这个生意更好做,下面就是一些让别人服务你的方法:

1.IaaS

别人给你提供厨房,炉子,煤气这些基础设施,你去制作

2.PaaS

除了别人给你提供的基础设施之后,还有人帮你做饼皮,自己只需要把其他配料撒上去,之后还有人帮你烤

自己能决定的就是这个披萨的味道

3.SaaS

自己不参与制作,直接用别人做好的披萨,自己只需要包装一下,给披萨打上自己的logo卖出去就可以

4.BaaS

提供了一些服务让你选择,别人提供了烤披萨,调配料这些服务,用哪个就可以点哪个

5.FaaS

比提供某一项服务更加具体,具体到某一项服务的具体内容

c技术特点:

按需加载
应用的加载(load)和卸载(unload)由Serverless云计算平台控制。这意味着应用不总是一直在线的。只有当有请求到达或者有事件发生时才会被部署和启动。当应用空闲至一定时长时,应用会被自动停止和卸载。 事件驱动
应用的加载和执行由事件驱动,通过将不同事件来源(EventSource)的事件(Event)与特定的函数进行关联,实现对不同事件采取不同的反应动作。

状态非本地持久化
云计算平台自动控制应用实例的加载和卸载,且应用和服务器完全解耦,应用不再与特定的服务器关联。因此应用的状态不能,也不会保存在其运行的服务器之上,不能做到传统意义上的状态本地持久化

应用函数化
每一个调用完成一个业务动作,应用会被分解成多个细颗粒度的操作。由于状态无法本地持久化,这些细颗粒度的操作是无状态的。

依赖服务化
所有应用依赖的服务都是一个个后台服务(BackendService),应用通过BaaS方便获取,而无须关心底层细节。

Serverless的局限性:

可移植性
Serverless应用的实现在很大程度上依赖于Serverless平台及该平台上的FaaS和BaaS服务。不同IT厂商的Serverless平台和解决方案的具体实现并不相同。
安全性
在Serverless架构下,用户不能直接控制应用实际所运行的主机。不同用户的应用,或者同一用户的不同应用在运行时可能共用底层的主机资源。对于一些安全性要求较高的应用,这将带来潜在的安全风险。
性能
当一个Serverless应用长时间空闲时将会被从主机上卸载。当请求再次到达时,平台需要重新加载应用。应用的首次加载及重新加载的过程将产生一定的延时。对于一些对延时敏感的应用,需要通过预先加载或延长空闲超时时间等手段进行处理。
执行时长
Serverless的一个重要特点是应用按需加载执行,而不是长时间持续部署在主机上。目前,大部分Serverless平台对FaaS函数的执行时长存在限制。因此Serverless应用更适合一些执行时长较短的作业。 
技术成熟度
目前Serverless相关平台、工具和框架还处在一个不断变化和演进的阶段,开发和调试的用户体验还需要进一步提升。

如何实现FaaS?

微服务和FaaS的差别在于粒度,微服务是功能级别,FaaS 是函数级别。server 要实现FaaS,首先必须将单体应用演进到微服务,然后才能进一步地分解到函数级别,实现FaaS。

浅析Serverless相关推荐

  1. 浅析基于 Serverless 的前后端一体化框架

    概述 Serverless 是一种"无服务器架构"模式,它无需关心程序运行环境.资源及数量,只需要将精力聚焦到业务逻辑上的技术.基于 Serverless 开发 web 应用,架构 ...

  2. Serverless浅析

    自从2014年AWS推出Lambda服务后,Serverless一词越来越热,已经成为一种新型的软件设计架构,即Serverless Architecture.作为一种原生于公共云的架构,Server ...

  3. 浅析阿里云网络-SLB负载均衡

    浅析阿里云网络-SLB负载均衡 最近有很多朋友问阿里云网络-SLB负载均衡是什么?怎么样?小编赵一八笔记特意从网上整理相关资料,希望能够帮到大家. 你可以了解阿里云网络SLB负载均衡产品进化史. 你可 ...

  4. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

  5. 浅析Python中bytes和str区别

    本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...

  6. 一键部署dns服务_OpenShift : 通往云原生、DevOps、微服务和Serverless的大门

    新书速递 查尔斯·狄更斯的<双城记>中有句耳熟能详的名言:"这是一个最好的时代,也是一个最坏的时代."作为技术从业者,在这个数字化浪潮和技术变革接连发生的时代,我对这句 ...

  7. 学习《Linux设备模型浅析之设备篇》笔记(深挖一)

    这篇文章既然说了是浅析,那就是跳过了一些东西,我们把这些跳过的东西给它尽可能的补回来 今天登陆 lxr.free-electrons.com 发现内核版本已经升级到3.15了,那以后都使用3.15的源 ...

  8. 学习《Linux设备模型浅析之设备篇》笔记(一)

    最近在学习Linux设备模型,前面几篇文章也是读这篇的时候遇到问题,然后为了搞清楚先转去摸索才写出来的. 当然了,刚开始是先读到<Linux那些事儿之我是Sysfs>,搞不清楚才去读的&l ...

  9. 二:serverless网站数据库操作

    操作数据库API文档 第一篇,搭建一套免费的serverless网站 一,创建集合,进入控制台 登录腾讯云后台 打开云开发控制台 可以新建集合,新建集合后点击集合名称即可批量导入导出数据库集合的数据, ...

最新文章

  1. 待遇46K起,这几个公众号在招人!
  2. 在计算机术语中 将ALU控制器和,计算机组成原理试题与答案
  3. ASA IPSEC ***配置
  4. WebBrowser部分用法
  5. ECCV 2020 | 微软亚洲研究院精选论文摘录
  6. 帆软Tab控件与控制组件隐藏的异同点
  7. 信号与系统学习笔记与代码实现3-周期信号的傅里叶级数表示
  8. 一种人脸识别活体检测方法:基于背景的活体判断方法
  9. 股权架构设计五大关键要点
  10. 面试题:为什么说 Mybatis 是半自动ORM 映射工具?它与全自动的区别在哪里?
  11. 360企业版退出密码
  12. python中断输入_在 Python 中接管键盘中断信号的实现方法
  13. docx文件是什么?如何打开后缀名.docx格式的word2007文件?
  14. 数据中台与数据仓库区别
  15. Koa2仿知乎服务端项目:Webpack配置
  16. 用python做了一个统计排班表
  17. 2022年京东活动时间表,今年下半年何时活动力度最大?
  18. 图片的alpha 通道
  19. 022 利用头皮脑电信号预测癫痫发作2021
  20. Hotspot 重量级锁ObjectMonitor(二) 源码解析

热门文章

  1. LeetCode 250. 统计同值子树(递归)
  2. LeetCode 554. 砖墙(map计数)
  3. LeetCode 962. 最大宽度坡(单调栈)
  4. 剑指Offer - 面试题46. 把数字翻译成字符串(DP)
  5. 计算机网络管理员中级第一套理论,计算机网络管理员第一套(中级)理论.doc
  6. 全球44家机构,55位大佬,历时两年,打造最强NLG评测基准!
  7. 阿里P8架构师谈:MySQL数据库的索引原理、与慢SQL优化的5大原则
  8. 技术动态 | 事理图谱,下一代知识图谱
  9. AAAI 2018经典论文获奖者演讲:本体论的昨天和今天
  10. pkuseg:一个多领域中文分词工具包