【架构】ServerLess

文章目录

  • 概述
  • 什么是serverless无服务
  • 与传统模式架构区别
  • serverless优缺点
  • 使用serverless的应用场景有哪些
  • “无服务器”搭建网站
  • Serverless的落地案例
  • 来源

概述

架构

  1. 单体(三层架构)
  2. 微服务
  3. 分布式
  4. ServerLess

什么是serverless无服务

serverless中文的含义是 “无服务器”,但是它真正的含义是开发者再也不用过多考虑服务器的问题,但是并不代表完全去除服务器,而是我们依靠第三方资源服务器后端,比如使用 Amazon Web Services(AWS) Lambda. 计算服务来执行代码,那么Serverless架构分为 Backend as a Service(BaaS) 和 Functions as a Service(FaaS) 两种技术,Serverless 它是由开发者实现的服务端逻辑运行在无状态的计算容器中,它是由事件触发,完全被第三方管理的。

什么是BaaS?

Baas 的英文翻译成中文的含义:后端即服务,它的应用架构由大量第三方云服务器和API组成的,使应用中关于服务器的逻辑和状态都由服务提供方来管理的。比如我们的典型的单页应用SPA和移动APP富客户端应用,前后端交互主要是以RestAPI调用为主。只需要调用服务提供方的API即可完成相应的功能,比如常见的身份验证,云端数据/文件存储,消息推送,应用数据分析等。

什么是FaaS?

FaaS可以被叫做:函数即服务。开发者可以直接将服务业务逻辑代码部署,运行在第三方提供的无状态计算容器中,开发者只需要编写业务代码即可,无需关注服务器,并且代码的执行它是由事件触发的。其中AWS Lambda是目前最佳的FaaS实现之一。

Serverless的应用架构是将BaaS和FaaS组合在一起的应用,用户只需要关注应用的业务逻辑代码,编写函数为粒度将其运行在FaaS平台上,并且和BaaS第三方服务整合在一起,最后就搭建了一个完整的系统。整个系统过程中完全无需关注服务器。

与传统模式架构区别

传统的架构模式是使用C/S架构的,在典型的web应用程序中,服务器接收前端的HTTP请求处理,在保存或查询数据库之前,数据可能会经过多个应用层,最终后端会返回一个响应。比如它可以是JSON形式或其他格式等。然后他会将响应返回给客户端,比如如下图所示:
在这里插入图片描述
在传统开发模式中,开发流程:设计师设计页面 -> 服务端开发 和 前端分别开发,服务器开发完成后,-> 服务部署 ->服务部署完成后,就是前后端联调 -> 前后端联调 -> 前后端联调完成后就是测试了,-> 测试, 测试完成需要上线,因此 -> 上线,上线完成后,需要运维维护,因此 -> 运维。在传统开发模式中,开发一个应用程序,从开始到上线需要不同的角色来做不同的事情,沟通成本非常大,并且运维过程中需要考虑到 服务器的负载均衡、事务、集群、缓存、
消息传递和数据冗余等等这些事情,在目前传统模式中存在如上问题。可以使用如下示意图来看下如上流程。如下图所示:
在这里插入图片描述
在Serverless架构中,应用业务逻辑是基于FaaS架构形成多个相互独立的功能组件的。并且以API服务的形式向外提供服务,在FaaS中,后端的应用被拆分成为一个个函数,我们只需要编写完成函数后部署到serverless服务即可。后续我们也不用关心任何服务器的操作。那么整个流程就只需要我们一个前端工程师的角色来完成所有的开发工作,那么沟通成本降低了。因此我们可以使用如下示意图来表示项目流程,如下所示:
在这里插入图片描述
前端工程师是居于serverless去写后端服务的,典型的就是居于 AWS Lambda 中编写代码,AWS中支持不同的语言。
Lambda计算服务它能够以大规模并行的方式执行代码来响应事件。通过使用Lambda以及使用各种功能强大的API和Web服务,开发者可以快速的构建松耦合,可扩展性及高效的架构体系。

注意:Lambda是什么?它是一种计算服务,它在AWS基础上执行用javascript、node.js、Python、C#或java编写的代码,源代码将被打包并部署到孤立的容器中,该容器有单独分配的内存、磁盘空间和处理器。代码、配置和依赖项的组合被称作为Lambda函数。

serverless优缺点

优点有如下:

  1. 降低创业公司启动成本

当一家创业公司的时候,在开发web的时候,我们需要版本管理服务器、持续集成服务器、测试服务器、应用版本管理仓库等作为基础服务。
线上运行的时候,为了应对大量的请求,我们还需要一个好的数据库服务器。当我们应用面向普通的用户时,我们需要:

1.1 邮件服务,用于发送提醒,注册等服务。
1.2 短信服务,用于注册,登录等用户授权操作。

如上一些对于大公司来讲,都有现成的基础设施。可是对于创业公司来讲。这都需要一些启动成本。但是如果我们使用serverless就可以降低这些成本。

  1. 减少运营成本

对于创业公司来讲,他们没有基础设施,没有财力,也可能没有能力去建设基础设施,采用云服务是最好的选择,可以为他们节省大量的资金。
他们只要将精力放在对用户价值的产品之上即可,他们不需要自己去搭建服务器,因此会有更多的时间去开发业务功能。而采用函数计算的serverless与云服务器最大的区别是:云服务器需要一直运行,比如说月费或年费要多少钱租,但是serverless是按需计费的,如果有请求到来的时候,才运行函数,否则的话,是不需要钱的。

  1. 降低开发成本

serverless会提供一系列的配套服务,比如 我们只需要在配置文件上写下数据库的表名,那么数据就会存储到对应的数据库里面,并且会提供一系列的函数计算模板,我们只需要写好我们的配置即可,那么这一系列的东西都可以自动,高效的完成任务。

  1. 实现快速上线

对于一些传统项目来讲,我们在本地开发需要部署环境,到开发环境或测试环境,我们还是需要部署环境。但是serverless可以在部署上有优势,并且很轻松的实现上线。因为serverless内部相当于有 内建自动化部署功能,并且在该里面都是由供应商提供的功能,每次我们写完业务代码后,我们只需要运行下即可,在AWS Lambda 函数计算里面,函数一般在上传后几秒钟内,就能做好调用准备。

  1. 系统安全性更高。

要保持服务器一直运行不是件容易的事情,并且还需要考虑黑客不同类型的攻击,但是有serverless后,我们不需要考虑这些问题了,这些问题第三方供应商已经会帮我解决这些问题的。

  1. 能适应微服务架构和扩展性能力强

Serverless 的背后是 诸如 AWS Lambda 这样的 FaaS(Function as a Services)。

对于传统应用来说,要应对更多的请求的方式,就是部署更多的实例。然而,这个时候往往已经来不及了。而对于 FaaS 来说,我们并不需要这么做,FaaS 会自动的扩展。它可以在需要时尽可能多地启动实例副本,而不会发生冗长的部署和配置延迟。

以亚马逊的AWS Lambda为案例,Lambda能让我们不用思考任何服务器,也就是说,不用我们处理服务器上的部署,服务器的容量和服务器的扩展和失败容错,还有服务器上选择什么OS操作系统,语言的更新,日志等等问题。你的应用程序只需要和多个第三方的API或服务打交道,也可以自我创建一个无服务器的
API。

缺点有如下:

  1. 不适合长时间运行应用

serverless 在请求到来的时候才运行,当应用不运行的时候会进入 “休眠状态”,下次当请求来临时,应用将会需要一个启动时间,可以叫 冷启动,如果我们的应用需要一直长期不间断的运行,处理大量的请求,那么可能就不适合使用serverless来架构了,如果这种情况下,我们需要使用像EC2这样的云服务器会是一个更好的选择。

EC2相当于我们自己买了一辆车,在Lambda 相当于我们租了一辆车。如果我们长期租车的话,那么肯定比买车更贵,但是租车可以减少一部分车维护成本。

  1. 完全会依赖于第三方服务

如果我们所有和应用相关的服务放在第三方服务上的话,就可能会涉及到安全性问题,因此我们可以将不重要的API或服务放在serverless上。
当然如果我们自己有服务设施的话,那肯定使用自己的设施服务的,当我们自己使用serverless架构的时候,那么我们就已经和供应商绑定了。
如果这个时候我们将服务迁到别的云服务商上就没有那么容易了。

  1. 缺乏调式和开发工具,排查问题困难。

  2. 无法用于高并发运用。

为每个请求启动一个进程开销太高,流量瞬间爆发容易超时。比如淘宝的双十一支付宝高峰期,每秒处理交易笔数8万多笔,也就意味着我们的系统内每秒有8万多个进程创建又被销毁。那么这样就会造成系统开销很大。解释和第一点一样的原理。

使用serverless的应用场景有哪些

Serverless 适合构建比较简单的应用,比如上传一张图片,对一段音频/视频进行编码或解码,对请求返回一小段数据等。

Serverless架构主要有以下特点:

  1. 实现了细粒度的计算资源分配。
  2. 不需要预分配资源。
  3. 具备真正意义上的高度扩容和弹性。
  4. 按需使用,按需计费。

因此以下应用将可能使用serverless架构:

  1. 静态网站的管理。
  2. 替代WordPress(Serverless Blog Project)
  3. 个人媒体服务器(less!)
  4. 物联网Iot或家庭自动框架或项目 (使用 AWS IoT)

具体的应用基本如下:

发送通知

诸如 PUSH Notification、邮件通知接口、短信,这一类服务来说,他们都需要基础设施来搭建。并且,他们对实时性的要求相对没有那么高。
即使在时间上晚来几秒钟,用户还是能接受的。在我们所见到的短信发送的例子里,一般都会假设用户能在 60 秒内收到短信。因此,在这种时间 1s 的误差,用户也不会恼火的。而对于 APP 的消息推送而言,这种要求就更低了,用户反而不太希望能收到这样的推送。

WebHook

当我们没有服务器,又想要一个 Webhook 来触发我们一系列的操作的时候。我们就可以考虑使用 Serverless,我们不需要一直就这么支付一个服务器的费用。通过 Serverless,我们就可以轻松完成这样的工作,并且节省大量的费用。

数据统计分析

数据统计本身只需要很少的计算量,但是生成图表,则可以定期生成。

在接收数据的时候,我们不需要考虑任何延时带来的问题。50~200 ms 的延时,并不会对我们的系统造成什么影响。

Trigger 及定时任务

对于哪些需要爬虫来抓取和生成的程序来说,Serverless 可能是一个不错的舞台。

尽管,这样的工作也可以由云服务器来做,我们只需要定时的启动一下服务器。通过服务器中的自启动脚本来做相应的事,但是当我们完成了一系列的工作之后。我们需要将数据存储在一个远程的服务器上。而为了让系统中的其它应用,也能直接访问这些数据。那么,我们可能会考虑使用一个云数据库。这个时候,Serverless 应用看上去更具有吸引力。

Chat 机器人

聊天机器人,也是一个相当好的应用场景。

But,由于国内的条件限制(信息监管),这并不是一件容易的事。因此,从渠道(如微信、blabla)上,都在尽可能地降低这方面的可能性。

但是,我们还可以做一个微信公众号的服务。当用户输入一个关键词时,做出相应的回复,这实质上和聊天机器人是差不多的。

“无服务器”搭建网站

腾讯云 Serverless 提供了很多基于无服务器应用框架 Serverless 架构的应用部署,开发者无需关心底层资源,即可快速部署完整可用的 Serverless 应用架构,具有资源编排、自动伸缩、事件驱动等能力,帮助开发者通过联动云资源,迅速构建 Serverless 应用。

在这里插入图片描述
第一步,登录 Serverless 控制台, 单击「新建应用」后,就会进入到「新建应用」的页面。这次我们的目的是搭建网站,所以选择了 wordpress 应用。
在这里插入图片描述
第二步,填写应用名称,接着选择「不启用」自建数据库和私有网络,然后就点击「完成」即可。

在这里插入图片描述第三步,等待部署完成,只需要等待一下就完成了。
在这里插入图片描述部署完成后,就表示 WordPress 应用搭建完成了,然后就可以点击「访问应用」了。

在这里插入图片描述
此时显示的页面就是 WordPress 应用的页面,填写完信息后,一个网站就搭建完成了。
在这里插入图片描述
然后我们可以设置一下域名。在资源列表页,可以单击新增配置你的自定义域名。

你看,只需几步就把网站搭建完成了,而且可以看到,根本就没有云服务器的影子。就跟我们在手机上下载一个应用一样方便快捷。

这套搭建网站的方案,比自己租用云服务器搭建网站的方案,更加省钱,也更加简单。

Serverless的落地案例

2020 年天猫双 11,阿里云实现了国内首例Serverless在核心业务场景下的大规模落地,扛住了全球最大规模的流量洪峰,创造了Serverless落地应用的里程碑。

22年天猫双 11,阿里云Serverless支撑业务场景更多,范围更广。阿里云函数计算(FC)与集团内的运维体系全面实现标准化对接,打通了研发的最后一公里,首次实现了业务全链路“FaaS+BaaS”的Serverless体系化研发,覆盖淘特、淘系、阿里妈妈、1688、高德、飞猪等业务场景。

根据数据统计,支撑场景数量同比增加2倍,峰值流量总数同比增加3倍,实现了百万QPS的突破,人效提升40%。
在这里插入图片描述
再来看看外部用户。

网易云音乐,是阿里云Serverless产品的重要客户之一。

他们的产品背后,有非常多的算法服务支撑,比如多种码率的音频转码、听歌识曲中应用的音频指纹生成和识别、副歌检测、小语种音译歌词等等。

这些任务的资源需求和执行时间变化很大,需要使用C++、Python等多种语言实现,对算力的弹性要求非常大。

早期的时候,网易自建了一个算法服务平台,进行应对。但随着业务增长,以及算法复杂度的不断增加,基础设施管理的负担越来越大,严重影响了工作效率。

引入阿里云Serverless平台之后,网易的算法计算需求得到了很好的满足。网易在函数计算上高峰期一天处理超过2000万个任务,算法应用到业务10倍速的提升,稀疏调用的算法成本大幅缩减。

同样的效率提升,还发生在南瓜电影、越光医疗、世纪华联、江娱互动等企业身上。他们都是阿里云Serverless平台的用户。
在这里插入图片描述

来源

理解serverless无服务架构原理
什么是Serverless,怎么利用Serverless搭建网站详细教程!
越来越火的Serverless(无服务器计算),到底是个啥?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发语言介绍--ArkTS

1.编程语言介绍 ArkTS是HarmonyOS主力应用开发语言。它在TypeScript (简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。 2.TypeScript简介 自行补充TypeScript知识吧。h…

深入理解Python的logging模块:从基础到高级

在Python编程中,日志记录是一种重要的调试和错误追踪工具。Python的logging模块提供了一种灵活的框架,用于发出日志消息,这些消息可以被发送到各种输出源,如控制台、文件、HTTP GET/POST位置等。本文将深入探讨Python的logging模块…

冒泡排序之C++实现

描述 冒泡排序算法是一种简单的排序算法,它通过将相邻的元素进行比较并交换位置来实现排序。冒泡排序的基本思想是,每一轮将未排序部分的最大元素逐个向右移动到已排序部分的最右边,直到所有元素都按照从小到大的顺序排列。 冒泡排序的算法…

前端工程注入版本号

文章目录 一、前言二、webpack三、vite四、最后 一、前言 容器化时代,当页面出现问题时,如果你的新版本有可能已经修复了,那样你再排查它就没有意义了。为什么不一定是最新版本呢?一是可能是缓存作祟,二是可能运维成员…

每日一题——LeetCode860

个人方法: 用change数组保存我们拥有的零钱的数量,change数组只有change[5]、change[10]、change[20]是有效的,其值代表了不同面值的零钱拥有多少张 顾客付了多少钱,先把钱存入零钱数组,然后计算需要找零的金额&…

HarmonyOS - 鸿蒙开发入门

文章目录 HarmonyOS核心资源特性:全场景终端HarmonyOS 版本 HarmonyOS 和 OpenHarmony教程资源开发环境开发工具 - DevEco开发语言 - ArkTS核心框架 - ArkUI 考证 HarmonyOS 开发交流秋秋群:23458659,V : ez-code,期待交流和合作 …

vue 实验报告8 基于Nuxt.js开发一个Vue程序,实现登录和注册切换

一、步骤: 保证node.js版本在14以上 1. 全局安装create-nuxt-app: npm install -g create-nuxt-app2.9.x 2. 创建项目: create-nuxt-app my-nuxt-demo 选项这么选: 然后输入: cd my-nuxt-demo 3. 创建登录和注册页面: 在/pages目录下创建logi…

Docker知识总结

Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用应用的安装 掌握docker迁移与备份相关命令 能够运用Dockerfile编写创建容器的脚本 能够…

【小沐学写作】Docsify制作在线电子书、技术文档(Docsify + Markdown + node)

文章目录 1、简介2、安装2.1 node2.2 docsify-cli 3、配置3.1 初始化3.2 预览效果3.3 加载对话框3.4 更多页面3.5 侧 栏3.6 自定义导航栏 结语 1、简介 https://docsify.js.org/#/?iddocsify 一个神奇的文档网站生成器。 简单轻巧没有静态构建的 html 文件多个主题 Docsify…

跨平台Markdown编辑软件Typora mac功能介绍

Typora mac是一款跨平台的Markdown编辑器,支持Windows、MacOS和Linux操作系统。它具有实时预览功能,能够自动将Markdown文本转换为漂亮的排版效果,让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…

【测试开发】测试用例讲解

文章目录 目录 文章目录 前言 一、测试用例的基本要素 二、测试用例的设计方法 1.基于需求的设计方法 对日历根据web界面的功能布局分析出的功能框图如下: 继续举一个例子百度云盘非功能测试的案例: 2.等价类 3.边界值 5.正交表 6.场景设计法 7…

leetcode 268. 丢失的数字(优质解法)

链接&#xff1a;268. 丢失的数字 代码: class Solution {public int missingNumber(int[] nums) {int result0;for(int i0;i<nums.length;i){result^i;}for(int i0;i<nums.length;i){result^nums[i];}return result;} } 题解&#xff1a; 本题是比较简单的题&#xff…

c语言:递归法求n的阶乘|练习题

一、题目 输入一个数n&#xff0c;用递归法求n的阶乘 二、思路分析 1、因为n!(n-1)!*n,所以&#xff0c;可以选择用递归法 三、代码截图【带注释】 四、源代码【带注释】 #include <stdio.h> //思路&#xff1a; //因为n!(n-1)!*n,所以&#xff0c;可以选择用递归法 int…

数据资源工具断点续传及下载重试功能

我们可以利用数据资源工具下载各类卫星及矢量数据&#xff0c;具体方法见&#xff1a;Sentinel-2 下载&#xff08;其它数据操作方式类似&#xff09;&#xff0c;但在使用资源工具下载数据时可能会出现由于网络不稳定&#xff0c;网站关闭连接而造成下载的错误或中断。尤其是下…

微信小程序图片压缩原来这么easy!

前言 在日常业务中我们可能会涉及到图片上传功能&#xff0c;现代影像设备大多数的照片都是几MB&#xff0c;甚至几十MB大小&#xff0c;大文件的上传会导致上传进度缓慢、占用云存储空间。所以&#xff0c;我们会根据需求来做图片压缩&#xff0c;将过大的图片文件压缩到指定…

线性回归简介

线性回归简介 1、情景描述2、线性回归 1、情景描述 假设&#xff0c;我们现在有这么一张图&#xff1a; 其中&#xff0c;横坐标x表示房子的面积&#xff0c;纵坐标y表示房价。我们猜想x与y之间存在线性关系&#xff1a; y k x b ykxb ykxb 现在&#xff0c;思考一个问题&…

期末加油站-图像处理期末知识点汇总

第三章&#xff1a;图像增强 一、概念 1.图像增强是通过某种技术有选择地突出对某一具体应用有用的信息&#xff0c;削弱或抑制一些无用的信息。 2. 图像增强处理不是无损处理&#xff0c;不能增加原图像的信息。 3. 图像增强按所处理的对象不同可分为&#xff1a; 灰度图像增…

腾讯面试:SaaS多租户,如何设计?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 多租户设计&#xff0c;如何 技术选型&#xff…

Vue+ElementUI+nodejs学生宿舍报修管理系统68ozj

本站是一个B/S模式系统&#xff0c;采用vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得学生宿舍信息管理系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中…