【译】Serverless架构 - 3
原文:
消息驱动型应用
后台数据处理服务是一个不同的例子。 你要写一个需要快速响应UI请求的以用户为中心的应用, 但是你又想捕捉发生的各种不同类型的活动。让我们想一下在线广告系统 - 当一个用户点击时你想要非常快速的把它们转向到他们的目标广告,但同时你也需要拿到点击发生的数据以便于给广告商充值。(这个例子可不是假设的 - 我在Intent Media的前团队最近正在做这样的设计。)
传统上,架构可能看起来是这样的。‘广告服务器’同步地响应用户 - 在这个例子中我们可不关心交互 - 而他也会用‘点击处理器’向频道发送一条异步处理消息以便于更新数据库,例如去扣减广告商的预算。
在Serverless的世界看起来是这样的:
这里的架构跟我们之前那个例子有一点不同。我们将一个长存活周期的消费者应用替换成了厂家给我们提供的可以跑在事件驱动上下文中的FaaS函数。记住厂家同时提供MessageBroker和FaaS环境 - 这两个系统紧密捆绑在一起。
FaaS环境也可以用启动多个函数代码副本的方式来处理并行的点击 - 取决于我们如何写原始的处理逻辑,这是一个我们需要考虑新概念。
拆解‘函数即服务’
我们已经说了很多FaaS的主意,但现在是时候深入讲下它到底是什么意思了。我们可以先看一下Amazon Lambda产品的公开介绍 https://aws.amazon.com/lambda/。我加了一些注释,会在下面讲解。
AWS lambda可以让你在不需要管服务器的情况下跑代码。(1)… 用Lambda,你可以运行各种类型的应用或后台服务(2) - 全都是0管理配置。只需要上传你的代码并让Lambda来管让你的代码高可靠的运行(3)并伸缩(4)的事。你可以设置让你的代码被其他AWS服务(5)自动触发或者直接从任何web或移动应用调用。
1.基本上FaaS就是运行后端代码并不需要管理你自己服务器或你自己服务端应用的系统。第二个部分 - 服务端应用 - 是一个与像容器和PaaS(平台即服务)这样现代架构模式的关键不同。
如果我们回到之前点击处理的例子,FaaS做的就是替换点击处理服务器(可能是个物理服务器,),换成一些不需要实际服务器或者一直运行应用的东西。
2.FaaS可以不需要对某种框架或类库做编码。如果用语言和环境来实现FaaS函数功能的话一般就是常规的应用。例如AWS Lambda函数可以在Javascript,Python和任何JVM语言(Java, Clojure, Scala等)中被实现成‘一级类’。总之你的Lambda函数可以执行任何被任何绑定了其部署描述的进程,这样你可以用任何语言最终编译成一个Unix进程(参考后面的Apex)FaaS函数确实有明显的架构限制,特别是当它遇到状态和执行周期,这个我们后面会说。
让我们再想一下我们的点击处理例子 - 唯一需要更改并移动到FaaS的是‘主方法/启动’代码,这处需要删除,并且这个会变成顶层消息处理器(’消息监听借口’实现),但这只是对方法签名的一点改变。其他所有的代码(例如对数据库写数据的)在FaaS世界没有什么不同。
3.既然我们没有服务器程序要跑,部署跟传统系统非常不同 - 我们上传代码到FaaS提供商并且让它做其他所有事情。现在这基本上就是让你上传一个新的代码定义(例如zip或JAR文件),并且调用一个合适的API来初始化更新。
4.水平扩展是完全自动的,由供应商管理弹性。如果你的系统需要并行处理100个请求,供应商会处理而你不需要任何额外配置。FaaS供应商用‘计算容器’短暂执行你的函数方法并且根据运行时需求来销毁。
让我们回到点击处理。比如我们今天运气很好,用户像比平常点击了10倍的广告量。我们的点击处理应用能处理吗?比如我们是否对能一次能处理很多消息的场景进行编码?甚至我们只用运行一个应用实例够不够?我们能否运行自动扩展运行多个处理程序或者我们需要手动更改配置吗?在FaaS上你需要在写行数方法时先考虑并行,但在这之后FaaS供应商会自动处理所有扩展伸缩需求。
5.FaaS的函数方法是由厂家定义的事件类型来触发的。在亚马逊AWS上这包括了S3(文件)更新,时间(计划任务)和被发送到消息总线的消息(如Kinesis)。你的函数需要为你绑定的消息源提供特定的参数。在点击处理器中我们假设我们使用了支持FaaS的消息分发者。如果我们需要换一个,那么需要连消息生产者也要改。
6.大多数厂商允许函数方法可以被进入的http请求触发并作为响应,这很像一种API网关。(如AWS API Gateway, Webtask)。在我们宠物商店里作为‘搜索’和‘下单’的函数功能。
文章来自微信平台「麦芽面包」
微信公众号「darkjune_think」转载请注明。
微信扫一扫关注公众号。
【译】Serverless架构 - 3的更多相关文章
- 了解Serverless架构
1 概述 Serverless中文译为“无服务”是一种新兴起的架构模式,公司ESB产品引入Rest微服务服务机制过程,笔者刚好参与其中,其中Serverless作为一个新起的概念,跟微服务架构相关,为 ...
- 【转】Serverless架构
这是来自martinfowler.com的Serverless架构一文的大意翻译. 什么是Serverless? Serverless首先是用于描述我们的应用程序是明显或充分地依赖第三方应用或服 ...
- Serverless 架构:用服务代替服务器
Serverless 架构:用服务代替服务器 转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需 加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:&q ...
- Serverless架构
什么是Serverless架构 Servlerless 架构是新兴的架构体系,在Serverless 架构中,开发者无需考虑服务器的问题,计算资源作为服务而不是服务器的概念出现,这样,开发者只需要关注 ...
- 转帖: Serverless架构模式简介
Serverless架构模式简介 原贴地址:https://blog.csdn.net/chdhust/article/details/71250099?utm_medium=referral&a ...
- Serverless架构详解:开发者如何专注于业务代码本身?
本文来自腾讯云技术沙龙,本次沙龙主题为Serverless架构开发与SCF部署实践 演讲嘉宾:黄文俊,曾负责企业级存储.企业级容器平台等产品的架构与开发,目前主要负责SCF腾讯无服务器云函数产品相关. ...
- 采用Serverless架构搭建Web应用
本文会向你介绍一种新的可能,一种无服务器的方案来搭建Web应用.使用这个方案大部分运维方面的问题就不需要你自己操心了,而且也省去运行服务器的费用.本文从无服务的优势与限制两方面带您初识Serverle ...
- Serverless 架构的优点和缺点
Serverless 的优势 在我使用 Serverless Framework 开发 AWS Serverless 应用的过程中,最方便的莫过于,第一次部署和第二次.第三次部署没有什么区别.只需要执 ...
- 阿里云云开发平台助力风变科技Serverless架构升级实战
阿里云云开发平台助力风变科技Serverless架构升级实战 背景 风变科技 一个希望通过技术去推动下一代基础教育的组织.旗下产品包括第一代的熊猫书院(读书类产品).第二代的熊猫小课(泛学科综合学习平 ...
- COS 数据湖最佳实践:基于 Serverless 架构的入湖方案
01 前言 数据湖(Data Lake)概念自2011年被推出后,其概念定位.架构设计和相关技术都得到了飞速发展和众多实践,数据湖也从单一数据存储池概念演进为包括 ETL 分析.数据转换及数据处理的下 ...
随机推荐
- 制作MacOS 系统启动盘
1,首先需要在一台有MacOS系统,在Apple stroe下载MacOS High Sierra安装程序: 2,准备一个至少8G容量的U盘: 3,打开 “应用程序 → 实用工具 → 磁盘工具”,将U ...
- Spring Boot+MyBabits静态连接多个数据库
1.修改.properties first.datasource.jdbc-url=jdbc:mysql://localhost/forwind first.datasource.username=r ...
- 对象.isdigit() ,只能判断全是数字的字符串
s = "55p"" print(s.isdigit()) # False s2 = "5568" print(s2.isdigit()) # Tru ...
- IDL创建泰森多边形
结果图: 附加源码: PRO testVoronoi idx = 0 ; 创建离散点 CASE idx OF ; 随机离散点 0: BEGIN N = 36 X = RANDOMN(seed, N) ...
- bin/hdfs dfs命令
appendToFile Usage: hdfs dfs -appendToFile <localsrc> ... <dst> 追加一个或者多个文件到hdfs制定文件中.也可以 ...
- redis开启远程连接访问和需要密码的方法
redis默认是不能远程访问的,如果希望多台机子共用redis数据库,那就需要开启redis远程连接访问.既然可以远程连接了,那就需要密码登陆,否则不安全.下面是具体的方法,按照步骤一步一步来就OK了 ...
- python中string格式化
python中可以对string, int, float等数据类型进行格式化操作.下面举例来说明一些常用操作. 先贴出 python 对 String Formatting Operations 讲解 ...
- Paxos算法简单陈述
上文二段式和三段式提交协议是相对比较容易理解的.1990年Leslie Lamport 提出的Paxos算法是一种基于消息传递且具有高度容错特性的一致性算法.但是Paxos算法比较复杂,对于不能沉心学 ...
- arcgis api for javascript本地部署加载地图
最近开始学习arcgis api for javascript,发现一头雾水,决定记录下自己的学习过程. 一.下载arcgis api for js 4.2的library和jdk,具体安装包可以去官 ...
- Hadoop学习之路(十三)MapReduce的初识
MapReduce是什么 首先让我们来重温一下 hadoop 的四大组件: HDFS:分布式存储系统 MapReduce:分布式计算系统 YARN:hadoop 的资源调度系统 Common:以上三大 ...