浅析Serverless

近两年来,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 ServiceFaaS)以及后台即服务(Backend as aServiceBaaS

那么下面来说说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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复兴or幻象?VR的2021三重门

来源:脑极体从2020年底开始,无论你日常看一些数码博主的评测,还是喜欢了解科技产业的动态、投融资的报道,都能在媒体中了解到这么一个信号:2021,VR复兴了!当然,这个表述有很多说法&a…

关于ubuntu环境下gcc使用的几点说明

1 sudo apt-get build-dep gcc //安装gcc编译器2 3 4 /*5 假设已经创建hello.c文件6 */7 8 //方法一9 $gcc hello.c //将源文件直接编译成文件名为a.out的可执行文件 10 $./a.out //执行a.out可执行文件 11 12 13 //方法二 14 $gcc -o hello hello.c //将…

24张GIF图,让你秒懂非标自动化机构的原理

来源:工业机器人1.组合加紧机构↓↓2.凸轮连杆组合输送薄板机构↓↓3.热合联动↓↓4.凸轮双摇杆机构单独运动↓↓5.步进输送机构↓↓6.输出构件作间歇运动↓↓7.输出构件作间歇运动等宽凸轮间歇移动机构↓↓8.双摇杆夹紧机构↓↓9.不自锁推拉式夹紧机构↓↓10.双肘杆…

selectByExample和selectByExampleWithBLOBs的区别

1、问题描述: 在mybatis逆向工程生成的代码中会有selectByExample 和selectByExampleWithBLOBs 两个方法,这个两个方法有何区别? 2、问题解析: 1>两个方法的返回的resultMap 不同 selectByExample 方法返回:Base…

hdu 2197 本原串

Problem Description由0和1组成的串中&#xff0c;不能表示为由几个相同的较小的串连接成的串&#xff0c;称为本原串&#xff0c;有多少个长为n&#xff08;n<100000000)的本原串&#xff1f;答案mod2008.例如&#xff0c;100100不是本原串&#xff0c;因为他是由两个100组…

机器学习的通俗讲解

来源&#xff1a;dataxon译者&#xff1a;Ahong机器学习人人都在谈论&#xff0c;但除了老师们知根知底外&#xff0c;只有很少的人能说清楚怎么回事。如果阅读网上关于机器学习的文章&#xff0c;你很可能会遇到两种情况&#xff1a;充斥各种定理的厚重学术三部曲(我搞定半个定…

Mybatis中example的使用

Mybatis有很简单的方式来完成sql语句的编写 如下&#xff1a; int id 2; ClusterExample ClusterExample new ClusterExample(); ClusterExample.Criteria criteria ClusterExample.createCriteria(); //增加条件&#xff0c;对应为where&#xff0c;下面这行代码可以理解为…

崩溃bug日志总结2

目录介绍 1.1 java.lang.ClassNotFoundException类找不到异常1.2 java.util.concurrent.TimeoutException连接超时崩溃1.3 java.lang.NumberFormatException格式转化错误1.4 java.lang.IllegalStateException: Fragment not attached to Activity1.5 ArrayIndexOutOfBoundsExce…

边缘计算有哪些关键技术?

来源&#xff1a;智东西、金融界等网站原文链接&#xff1a;https://mp.weixin.qq.com/s/5QAHPMM8SNE3J8fpmDKFaQ如果要问物联网圈最火的概念有哪些&#xff1f;5G与边缘计算一定榜上有名&#xff0c;两者看似风马牛不相及&#xff0c;实则却在冥冥之中自有交集。5G时代&#x…

前端调用后端接口的错误(400)

前端调用后端接口时&#xff0c;浏览器debug出现Failed to load resource: the server responded with a status of 400 (Bad Request) 之后debug还会出现出现问题的url 这种问题一般是前后端参数不一致的问题 比如user类&#xff0c;里面包含属性id,name,age,gender等参数 …

cdh中hdfs非ha环境迁移Namenode与secondaryNamenode,从uc机器到阿里;

1.停掉外部接入服务&#xff1b; 2 NameNode Metadata备份&#xff1b; 2.1 备份fsimage数据&#xff0c;&#xff08;该操作适用HA和非HA的NameNode&#xff09;&#xff0c;使用如下命令进行备份&#xff1a; [rootcdh01 dfs]# mkdir nn_metadata_back [rootcdh01 dfs]# hdfs…

insert和insertSelective区别

在数据库中给一些字段设置了默认值 调用mybatis逆向工程生成的insert方法保存时并没有给这些字段传值&#xff0c;insert的结果却是这些字段的值依旧为null 之后查看源码发现insert方法会给所有字段赋一次值&#xff0c;因此即便未传该字段的值&#xff0c;也会给该字段赋值&…

论文《城市大脑的定义与建设规范探讨》在IEEE(ICBAIE)发表

来源&#xff1a;城市大脑全球标准研究组城市大脑全球标准研究组论文《Discussion on the Definition and Construction Principles of City Brain》&#xff0c;2021年3月在2021 IEEE 2nd International Conference on Big Data, Artificial Intelligence and Internet of Thi…

修改类名后依旧按照原先的类名进行加载

在springMvcMybatis的项目里面 修改了一个类名&#xff0c;之后编译的时候报出了以下的错误 试过 clean也没有作用 黑色涂鸦部分为原先的类名 删掉target文件夹解决了问题 原因是target会保存之前编译好的路径&#xff0c;编译时如果再根据之前的路径去寻找&#xff0c;一定…

谷歌的深度学习在AI芯片中找到了一条关键路径

来源&#xff1a;AI前线 作者&#xff1a;Tiernan Ray译者&#xff1a;Sambodhi策划&#xff1a; 刘燕一年前&#xff0c;ZDNet 与谷歌大脑总监 Jeff Dean谈到 了该公司如何使用人工智能来推进定制芯片的内部开发&#xff0c;从而加快软件开发。Dean 指出&#xff0c;在有些情…

select2实现全选

实现select2全选所有的选项 传入select2的Id即可。 //select2全选所有的选项 function chooseSelect2All(select_id) {//document的对象&#xff0c;可以取到optionvar item document.getElementById(select_id)//$(#select_id);//jquery的对象&#xff0c;用来指定select2控…

mybatis 打印SQL

如果使用的是application.properties文件&#xff0c;加入如下配置&#xff1a; #打印SQL logging.level.com.jn.ssr.supererscuereporting.daodebug logging.level.com&#xff0c;后面的路径指的是mybatis对应的方法接口所在的包。并不是mapper.xml所在的包。 如果使用的是ap…

脑机接口猴子通过“意念”打游戏!马斯克:未来能让瘫痪者用意念玩手机

来源&#xff1a;新智元它是Pager&#xff0c;一只9岁的恒河猴&#xff0c;来自Neuralink&#xff0c;最近它刚刚get了新技能——用意念玩乒乓球游戏。6个星期前&#xff0c;Pager的脑袋里被植入了两个叫N1 Link的装置&#xff0c;工作人员用香蕉奶昔诱惑它玩游戏&#xff0c;屏…

struts2_HelloWorld

第一个Struts2程序-Hello 1.创建web工程struts2-01-Hello 2.导入jar包到bin目录,jar地址: https://files.cnblogs.com/files/aihuadung/struts%E6%89%80%E9%9C%80jar%E5%8C%85.zip 3.配置web.xml文件 <?xml version"1.0" encoding"UTF-8"?><!DO…

centos 7 网络设置与图像化界面下载

①打开虚拟机的设置&#xff0c;找到网络设置。再启用网卡1&#xff0c;选择连接方式为Host-only&#xff0c;界面名称选择VirtualBox Host-Only Ethernet Adapter&#xff0c;设置如下图 提示&#xff1a; 1.对虚拟机网络设置&#xff0c;需要先关闭虚拟机&#xff1b; 2.这里…