Serverless无服务应用架构纵横谈

spacer:Lu用于Lua的无服务器功能平台 垫片 Lua的无服务器功能平台 产品特点 高性能无阻塞功能。 快速的编辑-保存-重新加载开发周期:无需重新部署或重建映像。 平台无关:使用从简单的数据库到复杂的集群。 垫片可以在大多数平台上运行。 概要 这是一个最小的垫片项目。 您编写一个函数: -- app/hello.lua local G = function ( args ) return " Hello from Spacer! " end return G ...并定义如何将其公开到互联网: -- app/gateway.lua local R = { -- HTTP Method, Path, Fu 立即下载

一、Serverless是啥

自从互联网兴起以来,Server就成了网络的核心部件。所以围绕Server的生意圈,也发展得如火如荼。

从最早的电信托管,到虚拟机,到现在的Serverless,形成了几大阵容:

1、IaaS(基础设施即服务:Infrastructure as a Service)

2、PaaS(平台即服务:Platform as a Service)

3、SaaS(软件即服务:Software as a Service)

IaaS是包硬不包软,面对集成商,PaaS是包硬包软不包工,面对开发者,SaaS是全包,面对消费者。

 

三大阵营都在不断演进中,互相取长补短,甚至模糊了彼此的界限。

PaaS最新的发展就是:

1、BaaS(后端即服务:Backend as a Service)

2、Faas(函数即服务:Functions as a Service)

这两种架构被称为Severless

 

BaaS与FaaS这两种架构被称为Severless,并非对开发者而言,是对服务商而言,没有一直运行的定制服务存在,不占用服务商的计算资源。同共享单车有些类似,是计算机分时租赁方式,按次按时计价。

 

BaaS并不存放客户代码,只提供通用的逻辑,产品的逻辑都需要在富客户端完成。这些通用的逻辑为所有客户共享,因而不浪费服务商的计算资源,也就可以做到按API调用次数计算费用。

以前叫我们把二层的富客户端都改成三层瘦客户端,现在搞个共享数据库,又叫我们改成富客户端。横竖赚钱。

 

 而FaaS存放客户代码,当访问时,调入相关资源,开始运行,运行完成后,卸载所有开销。

嘶~~~,听起来耳熟。靠,这不就是PHP吗?!我是不是发现了什么~~

 

二、Serverless凭啥

看来BaaS和FaaS都是新瓶装旧酒,那么Serverless凭啥流行,又是不是未来?

Facebook 于2013年花费了 8500 万美元收购了主流的BaaS平台 Parse 。由于 Parse 一直以来未能为 Facebook 提供预期的营收,Facebook 决定一年后将其正式关闭,并将其代码开源。Facebook这不差钱的行为,直接为整个行业蒙上了阴影。可以说直接逼死了某些跟风者。 

 

搭个共享数据库赚钱的想法基本破灭后,行业都纷纷压宝FaaS。那么FaaS的前景如何?

 

虽然FaaS是BaaS的“升级版”,并且与流行的微服务架构相吻合。但是无法改变它有强制所有程序按PHP方式运行这样一个可怕的设定。而这个无奈的设定所解决的是导致先行者AppEngine举步维艰的病根,那就是大量进程占用服务商过多的资源而不怎么赚钱。所以FaaS这个扭曲版AppEngine对于服务商来说是一剂良药,但是未必会是行业的未来。

 

这些年随着Docker平台的发展,启停一个容器的成本已经接近于启停一个进程。将AppEngine平台上的侦听进程都去掉,用一个统一的WebServer来侦听路由,当访问到来时,启动容器,运行,停止容器。这和PHP的做法一模一样,不过是把PHP.exe换成了Docker容器罢了。同一个思路,换一个环境,马上从落后变成了先进。可以你想像,FaaS是降低成本的利器,也一定会占有一部分低端市场。

 

但是,PHP也没有像FaaS一样强制要求所有服务达到函数这个级别,一步到位的确有点匪夷所思。函数也非FaaS最好的包装形式,不如像PHP直接对应到一个文件上。在我看来,现有FaaS平台的行为模式,只适合推广PHP,能够与PHP生态很好地对接,而其它语言则有不可调和的矛盾。

 

看了一下开源框架Fission的源码,想出一个兼容其它语言的方案,以Python语言为例。

要求Flask程序实现2个接口,原有的程序不加任何修改即可在FaaS框架下运行了,/register接口载入所有Route,并返回所有绑定规则,FaaS框架只需要把Route表合并就可以一次性创建所有Route。不必要一条一条调用fission function create与fission route add了。Http 请求来时调用/specialize接口,根据endpoint(即函数名)载入代码,实现FaaS功能。把框架接口开放给程序,能够实现最大的兼容现有框架,如果不放心,可以调用/specialize?endpoint=echo&echo=hello,来验证程序是否支持FaaS平台即可。

复制代码

from flask import Flask, request

app = Flask(__name__)

userfunc = None

@app.route('/register', methods=['POST'])
def register():
    # 引入所有Routes,并返回所有Rules
    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint) 
    
    return jsonify(app.url_map._rules_by_endpoint)
    

@app.route('/specialize', methods=['POST'])
def load():
    # 特化载入,只载入单个endpoint
    body = request.get_json()
    name = body['endpoint']
    
    global userfunc
    userfunc = imp.load_source(name)
    return ""

复制代码

 

 

 

三、Serverless有啥

Serverless平台一般分为如下三类:

1. 公有云Severless平台:

A. AWS Lambda、B. Microsoft Azure Functions、

C. Google Cloud Functions、D. Webtask、E. Syncano

2. 私有云Severless框架:

A. Fission (Kubernetes)、B. Funktion (Kubernetes)、

C. Kubeless (Kubernetes)、D. Gestalt (DC/OS)、

E. IBM OpenWhisk (Docker)、F. Iron Functions (Docker,Swarm, Kubernetes)

3.Serverless平台的包装框架:

A. Serverless(Node,大多数平台)、B. Apex(Go,AWS)

C. Zappa(Python,AWS)、D. Chalice(Python,AWS)

E. Claudia.js(Node,AWS)F. Gordon (Python,AWS)

 

四、Serverless干啥

1、AWS Lambda的包装框架Zappa,可以使用Flask,Django等框架。功能看下图可知:

 

2、Fission是一个Serverless开源框架。可以看看它都干了啥。

Fission是基于Kubernetes的,而Kubernetes是基于Docker的容器集群管理系统。

Kubernetes的内容太丰富,简单说来,实体对象有若干节点(Node)包含若干Pod,Pod又包含若干容器(Container),通过Pod上的标签(Label)组合成服务(Service)。

 Master包含如下组件:

  • apiserver:作为kubernetes系统的入口,封装了核心对象的增删改查操作。它维护的REST对象将持久化到etcd。
  • etcd:分布式强一致性的key/value存储
  • scheduler:负责集群的资源调度,为新建的pod分配机器。
  • controller-manager:负责执行各种控制器,目前有两类:
    • endpoint-controller:定期关联service和pod(关联信息由endpoint对象维护),保证service到pod的映射总是最新的。
    • replication-controller:定期关联replicationController和pod,保证replicationController定义的复制数量与实际运行pod的数量总是一致的。

Slave Node(称为Minion)包含如下组件:

  • kubelet:负责管控docker容器,如启动/停止、监控运行状态等。它会定期从etcd获取分配到本机的pod,并根据pod信息启动或停止相应的容器。同时,它也会接收apiserver的HTTP请求,汇报pod的运行状态。
  • proxy:负责为pod提供代理。它会定期从etcd获取所有的service,并根据service信息创建代理。当某个客户pod要访问其他pod时,访问请求会经过本机proxy做转发。
  • docker:docker容器引擎

 

Fission简单说来,就是一个Web应用,Go语言编写,使用gorilla框架。不过它的模板引擎替换成了Kubernetes中的Service。使用k8s.io/client-go/kubernetes接口来操控(k8s就是Kubernetes)。

 

 

参考文档:

《采用Serverless架构》

《Kubernetes初探》

《十分钟带你理解Kubernetes核心概念》

《Kubernetes权威指南》

MIKE21桥墩模拟实战:抠网格与构筑物法对比与选型指南 本文详细对比了MIKE21软件中抠网格法与构筑物法在桥墩模拟中的应用,包括操作步骤、适用场景及优缺点分析。通过实际案例数据展示两种方法的精度与效率差异,并提供选型决策树和常见问题解决方案,帮助工程师根据项目需求选择最优模拟方法。 阅读详情

相关推荐

【VSCode Python无法格式化代码】

提示:需要Install Formatter…安装插件autopep8,点击install。出现Format Document。

AIFRZ的博客 1万+

Serverless是什么?如何使用?有哪些优势?国内外有哪些Serverless平台?

Serverless 是云计算的一种模型。以平台即服务(PaaS)为基础,无服务器运算提供一个微型的架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供, Serverless computing(无服务器运算,又被称为函数即服务 Function-as-a-Service,缩写为 FaaS),以 Amazon Lambda 为典型服务。Serverless 作为一种新型的互联网架构,推动云计算的发展。

weixin_42560424的博客 1297

win10 运行lisflood_8踩过的坑

1、安装cuda及VS2019 https://www.bilibili.com/read/cv7335974/ 2、netcdf.h头文件找不到问题 https://www.cnblogs.com/lyggqm/p/12926974.html https://blog.youkuaiyun.com/u011954296/article/details/54617048 3、编码问题 https://blog.youkuaiyun.com/qq_33485434/article/details/81196843 4、

我的笔记 4115

十大Serverless平台

这是由Microsoft Azure提供的serverless计算服务,可以让开发者使用不同的编程语言(包括C#、Java、Python等)编写并运行可扩展的应用程序。Google Cloud提供的serverless计算服务,可以让开发者使用不同的编程语言(包括Python、Java、Node.js等)编写并运行可扩展的应用程序。服务锁定:Azure Cosmos DB,Azure Blob等,另外Azure对于C#是优先支持的,所以对于Java/Python/Go等技术栈的公司需要小心。

WASM社区 491

细聊Oracle通过ODBC数据源连接SQL Server数据库

    类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,废话不多说。    我的应用场景:    项目系统使用oracle数据库,与客户的第三方系统供应商实现资源共享,对方为sql server数据库;    我的测试开发环境为64bitwin7PC机,本机上装有64位Oracl...

xueren_83的博客 1万+

电芯外观及体系设计(Cell Design)-①容量平衡设计(Cell Balance Design)

全面获取并正确解读客户需求,将需求进行分解和预判,结合公司现有资源、技术,给出设计方案。一个优秀的电芯设计方案,应该是稳健的,可操作的,满足客户需求的同时,并能为公司带来较多利润。电芯设计需同时考虑周期,性能,品质,加工性,成本,及安全与稳健性。设计人员时刻要有成本控制观念,但利润则是由公司战略所决定。

FDC1303864002的博客 1354

无服务器架构(Serverless Architecture)

Serverless(无服务器架构)并不是指没有服务器存在,而是一种由云服务提供商全面管理服务器资源的架构模式。在Serverless架构中,开发者无需关注底层的服务器管理、配置和维护,而是专注于编写业务逻辑代码。云提供商负责自动扩展、负载均衡、故障恢复等基础设施的运维工作。核心特点:常见的Serverless服务包括:Serverless架构的发展可以追溯到2000年代中期,随着云计算的兴起,开发者开始寻求更高效的资源管理和应用部署方式。以下是Serverless架构发展的几个关键里程碑:2006年:亚马

hello.reader 5383

SystemVerilog学习总结

因为选择的offer是IC验证,以前学的是设计,所以只能再学systemverilog(SV)和UVM了。在学习SV和UVM之前,我认为需要学习以下几个部分:数字电路、c++和verilog。因为IC验证确实有不少别的专业之前没学过数字电路和Verilog,所以还是最好先学习一下。 知识点的总结主要是通过systemverilog验证-测试平台编写指南这本书进行的,所以请看书。通过对这本书的目录进行重点的划分,然后再进行相关知识点的总结。最后,给出自己收集的别的博主IC EDA环境的虚拟机,以及使用虚拟机需

博主毕竟还是人,肯定会有错误,各位看的时候发现错误提出来就好 1万+

云原生时代,如何构建自己的Serverless平台

点击上方“程序猿技术大咖”,关注并选择“设为星标”回复“加群”获取入群讨论资格!2009 年加州大学伯克利分校发表了一篇文章,预言云计算将是未来重要的技术趋势。十年后的2019年,该校对 Serverless 技术再次进行预测,认为 Serverless 技术是未来十年的技术趋势。Serverless 计算被认为是云主机、容器之后的第三代计算形态。下图为云计算发展的整个过...

xcbeyond|疯狂源自梦想,技术成就辉煌 1297

【AI for Medecine】吴恩达医学图像AI专项课程(诊断、预测、治疗)

近期需要简单了解AI4Science上的一些应用,看到吴恩达大佬的专项课程,于是开始来个“全面”的了解--医学人工智能(诊断、预测、治疗)。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 783

手把手教你写上位机软件(c#、winform)

上位机软件模板

qq_34059233的博客 7万+

Serverless无服务应用架构纵横谈2:边缘计算激战正酣

合集 - Serverless无服务应用(2)1.Serverless无服务应用架构纵横谈2:边缘计算激战正酣07-142.Serverless无服务应用架构纵横谈2017-12-08收起 Serverless无服务应用架构纵横谈2 前言 6年前,我写了一篇《Serverless无服务应用架构纵横谈》。 文中说到无论是公有云FaaS还是私有云FaaS,都不是云计算的未来。 因为无论是Kub...

weixin_32083393的博客 806

把 ST03 的历史数据留得更久:ABAP Workload 统计保留期设置、原理与落地避坑指南

SAP ST03性能数据保留期配置指南 ST03/ST03N是SAP系统性能分析的核心工具,但默认数据保留期通常较短(3个月左右),难以满足跨季度对比、年度规划等需求。本文详细解析了ST03数据保留期的配置方法及注意事项: 数据存储机制:性能数据存储在监控库中,通过定期重组作业清理过期数据 配置路径:7.0+系统在"Workload Collector Database→Reorganization→Control"中按Profile分别设置 关键限制:保留期最大值建议不超过99,否则可

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 219

理解Serverless架构理念

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34247032的博客 1010

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Serverless :让「前端开发者」走向「应用研发者」

给大家分享一些关于HTML的面试题,有需要的朋友可以戳这里获取,先到先得哦。,真正体系化!**[外链图片转存中…(img-cEjsPpKa-1711722179414)]由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)给大家分享一些关于HTML的面试题,有需要的朋友可以戳这里获取,先到先得哦。

2401_84009679的博客 817

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

通通透透看无服务器计算:由来、场景和问题

一、 无服务器(Serverless)计算是什么云计算涌现出很多改变传统IT架构和运维方式的新技术,比如虚拟机、容器、微服务,无论这些技术应用在哪些场景,降低成本、提升效率是云服务永恒的主题。过去十年来,我们已经把应用和环境中很多通用的部分变成了服务。Serverless的出现,带来了跨越式变革。Serverless把主机管理、操作系统管理、资源分配、扩容,甚至是应用逻辑的全部组件都外包出去,把...

weixin_34124939的博客 2751

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【云原生】Serverless 技术架构分析

​Serverless(无服务器架构)指的是由开发者实现的服务端逻辑运行在无状态的计算容器中,它由事件触发, 完全被第三方管理,其业务层面的状态则被开发者使用的数据库和存储资源所记录。​ Serverless使得开发者无需直接处理服务器(无论是物理机,虚拟机,容器等)。无主机的优势会让使用者在服务器维护方面的操作开销大大减少,无需为升级服务器而忧心,无主机还意味着在应用程序中需要监控的度量指标也会不同。这是因为使用的大多数底层服务不会再发布 CPU、内存、磁盘大小等传统度量指标了。

qq_44683653的博客 7024

serverless架构

通过上面的资料,能够看出serverless的一些优点按量付费,节约成本NoOps,专注业务开发但如果你实际体验了一番阿里云serverless,会发现有一些限制服务编排要使用它特定的流程语言所有扩展项都是勾选框,如果你要特殊需求,可能要花费一番功夫代码要按照规定的要求编写某些组件的价格比较贵。

qq_22421145的博客 925

深入理解Serverless架构:构建无服务器应用的完全指南

介绍Serverless架构的定义和特点,包括事件驱动、自动扩展和按需付费。

努力是为了站在万人之中,成为别人的光 4480

什么是Serverless架构

Serverless架构是一种云计算模型,它将应用程序的部署和管理责任转移到云服务提供商,以此减少开发人员的服务器配置和管理任务。它的核心理念是将开发人员从服务器的管理和构建中解放出来,让他们专注于应用程序的编写和业务逻辑。1.减少服务器管理工作量:Serverless架构中服务器的管理工作由云服务提供商负责,开发人员可专注于应用程序的编写和业务逻辑。总体来说,Serverless架构的优点明显,可以为开发人员提高效率、降低成本,同时也需要在代码编写中考虑一些限制和问题。

新一技术 583

PHP-Serverless无服务器架构应用开发指南

根据需求和预算选择合适的平台。请注意,每个Serverless平台的具体配置和操作细节可能会有所不同,建议参考对应平台的官方文档进行更详细的了解和操作。Serverless平台通常提供监控和日志记录的功能,可以通过配置告警规则、查看指标和日志来监控函数的性能、调用次数和错误情况。9.资源管理和权限设置:根据应用的需求,设置相关资源(如数据库、存储等)的访问权限和配置。13.进行测试和验收:在Serverless平台上进行综合测试和验收测试,确保应用在实际场景中能够正常运行,并满足用户需求和预期。

qq_40902326的博客 493

无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

本文深入剖析了无服务器(Serverless)架构这一前沿云计算技术,全面揭示了其核心组件、显著优缺点以及多样化的适用场景。在无服务器架构的框架下,开发者能够摆脱传统服务器管理和维护的繁琐,专注于业务逻辑与应用的创新,实现资源的按需自动扩展与缩容,显著提升开发效率与运营成本效益。

博客虽小,世界尽在其中 8728

全面解析Serverless PHP功能、用例和优劣势

在本指南中,我们将仔细研究Serverless PHP的含义、其主要特性和优缺点,以便您更好地理解这种云计算方法。

WPHunter的编程技术资料库! 1231
上一篇: Fission分析
下一篇: 使用 Spring Cloud Function 框架进行面向函数的编程
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值