热度3年猛增20倍,Serverless云开发的技术架构全解析

『 作为一个不断发展的新兴技术, Serverless 热度的制高点已然到来。』

或许,Google Trends 所显示的 3 年猛增 20 倍的“ Serverless ” 搜索量,可以佐证 Serverless 在整个行业中的火爆程度。

1649686-20190715142231647-1011896982.png

不仅如此,据 KBV 研究公司新发布的《全球 Serverless 架构市场》及 RightScale 云服务状况报告 2018 版显示,全球 Serverless 架构的市场渗透率已超 75%,市场规模预计到 2024 年将达到 140 亿美元,并将在预测期内以 23.4% 的年复合增长率增长。

作为一种云原生的架构,Serverless 与 BaaS、FaaS 之间有何“爱恨情仇”?冤家路窄却能完美解决前后端联调等开发痛点,解决方案又是如何?相较于传统开发模式,基于“无服务开发”理念的小程序·云开发模式又“新”在何处,有何利好?下面我们从 Serverless 的架构演进来具体分析。

『 Serverless 架构详解 』

在过去的十几年里 (2006 年诞生 IaaS),云计算的进程从物理机演进到 IaaS,再到 PaaS,已经将应用程序的运行环境和通用组件,越来越多地交给云服务商。Serverless 进一步将主机管理、操作系统管理、资源分配、扩展、甚至应用逻辑的整个组件,都交付给云服务商,在成本和运营效率方面获得了显著的提升。
作为一种云原生的架构,Serverless 使得开发者在开发应用时不需部署、配置和管理传统服务器,转而依赖于第三方服务,将代码托管到云端平台。

目前,业界并没有给出明确的定义,而是把其分成两种类型,分别为「 Backend as a Service 」 和 「 Functions as a Service 」。换一种开发者更熟知的表达方式看,也就是「 后端即服务(BaaS)」和「 功能即服务(FaaS)」。

1649686-20190715142253830-1984630991.png

Serverless=BaaS+FaaS?听着很高深,其实很好理解。

「 BaaS 」是将应用开发中所有后端的需求,通过统一的云平台来解决,让开发者无需再编写和管理所有服务端组件。BaaS 使开发者无需编写完整的逻辑组件,但需要将应用程序与云服务商提供的特定接口和模型集成。

而「 FaaS 」是把函数作为一个线上服务、远程计算服务,可以通过 API、邮件、IoT 等执行。FaaS 是一种构建和部署服务端软件的新方式,面向部署单个的函数或者操作,是一种新的运行代码的托管环境。FaaS 本质上是事件驱动的,优化了函数运行时的资源使用,它的目标是在运行的时候才消费资源。

1649686-20190715142315119-785533720.png

从表面上看,BaaS 和 FaaS 是两码事——前者是把应用中的各个部分完全外包出去,后者是一种新的运行代码的托管环境。

那么,为什么要把它们都划归为 Serverless 呢?

关键在于,它们都不需要开发者管理自己的服务器主机或者服务器进程。Serverless 并非是无服务器,它仍然涉及服务器,只是这个服务器在云上。实际上,这是一种使用服务的新方法,在很多情况下,它比自己去买服务器更为划算,而且加快了项目上线的时间,降低了开发、维护、扩展的复杂性。

Serverless 技术的崛起不但让开发者无需过多考虑服务器问题,并且完美地解决前后端联调等开发痛点,作为一种全新的架构,Serverless 可谓是云计算发展演化的必然结果。

『 传统开发痛点解析及解法 』

“Serverless 所提供的接口,简化了云计算的编程,其代表了程序员生产力的又一次的变革,一如编程语言从汇编时代演变为高级语言时代。” 2019 年,伯克利在《将云中的编程变得简单:伯克利视角下的 Serverless 计算》中的犀利语句也论断了 Serverless 云时代主宰般的地位。

此前,云计算服务并没有从根本上改变设计应用程序的方式。

例如,当使用 Docker 这样的工具时,开发者在应用程序周围放置了一个更薄的“盒子”,但它仍然是一个盒子,逻辑架构不会发生显著的变化。再比如,在云中托管 MySQL 实例时,开发者仍需考虑工作负载所需的虚拟机资源,以及故障切换等问题。

现如今,这种情况在 Serverless 面前,迎刃而解。甚至在前后端分离与联调所产生的一系列权责、沟通与调试等开发痛点上,Serverless 也能从以下 5 个维度完美解决:

▪ 按需计费。不同于 IaaS/PaaS 预先分配计算资源的计费方式,Serverless 按请求次数及运行时间计费,一方面可以最大程度利用资源,另一方面真正的按需计费可以降低开发者的资源成本,开发者只需要为函数实际执行所消耗的资源付费,即用即付;

▪ 高效率。在 Serverless 的架构中,用户操作的是服务化的组件,如存储服务、授权服务等,缩短了开发周期,降低了开发难度,且避免了由基础设施产生的延迟;

▪ 绿色计算。在 Serverless 架构下,服务商提供细力度的计算能力,最大限度地满足开发的实时需求,资源利用率将大幅度提升;

▪ 高扩展。Serverless 架构的横向扩展是完全自动、有弹性的,且由服务提供者所管理;

▪ 无需运维。运维的发展经历了人肉运维、自动化运维、DevOps 和 AIOps 等阶段,而 Serverless 带来一种新的运维模式。在这种模式下,开发者只需要关心业务本身,无需运维。

正因开发痛点重重,在想要突破传统开发模式,探索新型开发方案的过程中,开发者借助 Serverless 技术架构,基于“无服务开发”理念创造出了一种新型开发模式——小程序·云开发。

小程序·云开发,是微信与腾讯云联合开发的原生 Serverless 云服务,它集成了微信公众平台及腾讯云两个核心业务的技术能力,免鉴权、免后端配置和运维、一切围绕 API 和 SDK 为核心。
以云调用功能为例,只要在小程序端触发云函数,便将经过微信自动鉴权直接调用,如数据分析、客服消息,插件管理等开放 API 接口。这些开放接口通过系统配置、将大幅提升效率、优化体验、降低运营成本。

1649686-20190715142346048-373607808.png
「 那么,在用户量峰值过大或黑客攻击的情况下,小程序·云开发是如何保证后台服务性能与安全的呢?」

首先,小程序·云开发没有传统的后台服务器,也就没有被 DDoS 的目标,这是从产品形态上保障用户业务安全;其次,小程序·云开发之间的环境是互相隔离的,即便发生攻击,从架构上将不会相互影响;再次,小程序·云开发服务构建在腾讯云基础设施之上,天然拥有快速扩容和安全防护的能力。

在用户量突增时,小程序·云开发的开发人员会立即通过响应的监控及告警发现流量的变化,然后确认是否需要扩容。腾讯云基础运维能力也保证了开发者拥有能够快速扩充服务的能力,以避免对用户的服务造成影响。

而在突发黑客大流量攻击(如 DDoS)时,小程序·云开发的开发及运维人员也会先确认遭受攻击的真实性,当得到确认后会第一时间与腾讯云系统运维、腾讯安全中心确认,确保已经对小程序·云开发的服务器加强防护,以保护系统服务安全。此外,小程序·云开发控制台也有响应的流量实时数据告知开发者,开发者可以据此了解服务的流量数据,如有异常可以联系小程序·云开发官方。

『 小程序·云开发架构详解 』

云开发是一种 BaaS,在引入了 Serverless 技术架构的同时,让开发者在构建应用的过程中无需关注计算资源的获取和运维。

在应用端,开发者可以直接使用官方提供的接口。在云函数端,开发者可以直接使用官方提供的 Node SDK,来操作云资源。

1649686-20190715142404944-1834361718.png

目前小程序·云开发一共提供了三大基础能力,分别是云函数、数据库、文档存储。简而言之,就是提供了存文件、存数据和运行业务逻辑的能力。

其中,云函数能力来源于腾讯云的“无服务器云函数 SCF” 。通过与 SCF 的深度结合应用,可以形成一套比较完整的 Serverless 解决方案。

▪ 使用 SCF,可以让开发者更简单的管理服务端代码,无需管理或配置服务器,只需将代码上传至 SCF,就可以自动运行;

▪ 可以更高效的利用资源,按照执行时间和调用次数收费,代码不运行时不产生费用;

▪ 可以快速建立持续扩展的能力,每个云函数互不影响,并行处理不同的逻辑。

此外,小程序·云开发的数据库能力则是基于腾讯云的 NoSQL 数据库服务,并兼容 MongoDB 协议。每个数据库资源都会分配一个实例 ID,每一个实例都是至少一主一从的副本集或者包含多个副本集的分片集群,数据库反向代理转发请求去最优副本集。

同样,小程序·云开发借助腾讯云提供的面向非结构化数据——对象存储(Cloud Object Storage,COS)支持文档存储服务的文件上传、下载和删除等功能,可以帮助开发者处理文件相关的业务逻辑。所有上传的文件都会有一个全网唯一的文件 ID,使用文件 ID 可以在 image、audio 等小程序组件中直接访问文件。通过小程序·云开发上传的文件在小程序内默认允许访问,不需要配置 CDN 域名白名单。

2019 年 1 月,腾讯云宣布推出总价值超过 10 亿元的“小程序·云开发”资源扶持计划,对超过一百万个小程序开发者提供免费资源扶持,全面助力开发者打造优秀小程序。
小程序·云开发将持续丰富 SDK 能力,释放腾讯的技术价值,逐渐支持多种开发语言,让开发更便捷。不仅如此,腾讯云还会加快丰富云开发的各类行业解决方案,满足企业业务不同应用场景需求 。
未来,新的技术层出不穷,但是要知道技术始终是为人服务的。不解决人的问题,技术无法成长壮大。

将开发者的精力解放出来,让他们投入到业务逻辑等更具价值的工作中,从根本上赋能技术发展,才是推动行业”车轮“不断向前驶进的源动力。

如果你有关于使用云开发CloudBase相关的技术故事/技术实战经验想要跟大家分享,欢迎留言联系我们哦~比心!

1649686-20190715142420629-612700647.png
云开发
Tencent CloudBase
关注我可以说是相当酷了~

转载于:https://www.cnblogs.com/CloudBase/p/11188687.html

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

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

相关文章

第七课 循环神经网络与自然语言处理

文章目录1 循环神经网络1.1 场景与多种应用1.2 RNN网络结构1.2.1为什么需要RNN1.2.2 RNN 结构1.3 多种RNN1.4 BPTT算法1.5 生成模型与图像描述2 LSTM2.1 LSTM2.2 GRU1 循环神经网络 1.1 场景与多种应用 1 模仿论文生成 2 模仿linux内核编写代码 3 模仿小四写论文 4 机器翻译 …

第十二题:设int x=1,float y=2,则表达式x/y的值是:

第十二题 设int x1,float y2,则表达式x/y的值是:() A 0 B 1 C 2 D 以上都不是 懵逼树上懵逼果,懵逼树下你和我 首先看到这道题,我是懵逼和绝望的。 首先我们打开评论,看看谁的赞最多,拿…

Linux 安装 lanmp

Lanmp介绍 lanmp一键安装包是wdlinux官网2010年底开始推出的web应用环境的快速简易安装包. 执行一个脚本,整个环境就安装完成就可使用,快速,方便易用,安全稳定 lanmp一键安装包是用shell脚本编写,且是开源的,你也可以根据业务需求,做相应的调整,来安装自…

如何利用Featue对特定的文档库或列表添加listviewtoolbar上的button

名字有点长,实在想不出什么好名字。 我们经常会遇到一个问题,就是需要在某一个列表或者文档库视图画面的listviewtoolbar上添加一个按钮来做一些操作。比如说页面跳转,列表操作等。目前很多人都知道利用Feature来添加这个button,而…

第八课 RNN条件生成与Attention机制

文章目录1 RNN条件生成2 机器翻译2.1 V1:Encoder-Decoder2.2 V2:Attention-based Encoder-decoder2.3 V3:bi-directional encode layer2.4 V4:Residual Encode layer3 Attention3.1 self attention3.2 hierarchical attention4 图像生成文本4.1 问题引入…

第十四题: 以下代码的输出结果是?

第十四题: 以下代码的输出结果是? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class B { public static B t1 new B(); public static B t2 new B(); { System.out.println("构造块"); } static { Syst…

第一百二十三期:免费在线制图神器!不上水印支持中文版,GitHub标星已破1万2

又一免费制图神器来袭!打开网页就能使用,支持中文版,也不会给你上水印。 作者:乾明 又一免费制图神器来袭! 名为draw.io,打开网页就能使用,支持中文版,也不会给你上水印。 不只是…

常用javascript脚本

BS开发中常用的Javascript技术 一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2、时间类 2.1 短时间,形如 (13:04:06) 2.2 短日期,形…

第一百二十四期:2019年臭名昭著的勒索软件,网络钓鱼和僵尸网络

Webroot发布了年度恶意软件列表,展示了2019年最臭名昭著的网络安全威胁。从攻击次数最多的勒索软件和加密挖矿,到破坏最大的网络钓鱼攻击,显然,全球网络威胁正在变得更为先进且难以预测。 作者:kirazhou 勒索软件 在…

好久没发胡说八道的贴了,今天发一贴

看了老翅寒暑 [真实案例:给所有想要创业的朋友的一个管理方面的测试题]一贴http://www.cnblogs.com/BigTall/archive/2006/12/20/597896.html这是一个真实的事件,我把它转化为了一个测试题目,问过很多朋友,到目前为止我认为答满分…

N元语法模型的数据稀疏问题解决方法之一:Good-Turing平滑

转载自时空霹雳 在统计语言模型章节中,我们谈到了N元语法模型不可避免的一个问题,就是数据稀疏,其原因是大规模语料统计与有限语料的矛盾。根据齐普夫(Zipf)法则,我们能够推测知零概率问题不可避免。数据稀…

错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap

最近在使用eclipse编写java程序时遇到这样一个问题: 错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.application.Application 看到这样的问题让我一头雾水,因为…

第十章 条件随机场CRF

文章目录1 条件随机场定义1.1 马尔科夫随机场1.1.1 用图模型表示概率1.1.3 三个马尔科夫性1.1.3 重点再看局部马尔科夫性1.2 马尔科夫随机场的因子分解1.3 条件随机场1.4 线性链条件随机场2线性链条件随机场的表示形式2.1 参数化形式2.2 简化形式2.3 矩阵形式3 条件随机场的概率…

第一百二十五期:程序员的自我救赎,使用Python开发性格分析工具

如此不均衡的贫富差距,各行业的领导者如何能管理好公司,让员工们既努力产出,又能安于现状呢?每个领导者必学的一门课程就是职场心理学。只有你充分了解员工心理与对应的行为表现,才能从容的掌控各类型的人员,从而达到…

笛卡尔乘积算法的体现

一个商品有多项属性,多项属性的组合就产生不同的商品型号如:衣服:颜色:红、绿尺寸:大、中、小产生的系列就有:红|大、红|中、红|小、绿|大、绿|中、绿|小如果商品的属性不至两个,则产生的系列会…

知识图谱基础

本系列是学习七月算法知识图谱课程的笔记。感觉自己完全就是一个托儿。前面七月算法机器学习,七月算法深度学习的笔记。现在又来了知识图谱课程的笔记。 文章目录1 why知识图谱2 知识图谱前世今生3 知识图谱相关技术4 知识图谱应用案例1 why知识图谱 没有知识图谱&…

第一百二十六期:代码以外的生存之道,献给每位入了坑的码农

本篇内容主要是对这本书的一个总结概括,也希望能用作抛砖引玉,让读者在看完之后,对这本书有所兴趣,或者希望能让读者对代码以外的需要做的事情更加积极明朗一点。 作者:码农三哥 前言 最近刚刚读完了一本书&#xf…

【UOJ 51】最接近神的人

【题目描述】: 破解了符文之语,小FF开启了通往地下的道路。当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案。而石门上方用古代文写着“神的殿堂”。小FF猜想里面应该就有王室的遗产了。但现在的…

第一百二十七期:程序员41岁创业逆袭成全美最受欢迎CEO,公司市值近200亿美金

袁征(Eric Yuan)在国内鲜为人知,却在硅谷的商业世界,创造了华人新的可能性——带领公司成功上市,成为全美国上市公司当中、美国面向全球的企业里估值最高的华人CEO。 作者:新芽NewSeed 导语:袁…

词汇挖掘与实体识别(未完)

文章目录1 概述2 词汇挖掘2.1 关键词提取2.1.1 基于特征统计2.1.2 基于主题模型2.1.3 Text-Rank算法提取2.2 同义词挖掘2.2.1 同义词类型2.2.2 挖掘2.3 缩略词挖掘2.4 新词挖掘3 实体识别(NER)3.1 基于概率图模型3.2 基于深度学习1 概述 实体:是文本中的一些词汇或…