<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Serverless on 古思乱想</title><link>https://blog.gusibi.site/tags/serverless/</link><description>Recent content in Serverless on 古思乱想</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 13 Jan 2018 17:23:49 +0800</lastBuildDate><atom:link href="https://blog.gusibi.site/tags/serverless/index.xml" rel="self" type="application/rss+xml"/><item><title>AWS-Lambda 使用入门</title><link>https://blog.gusibi.site/post/aws-lambda-quickstart/</link><pubDate>Sat, 13 Jan 2018 17:23:49 +0800</pubDate><guid>https://blog.gusibi.site/post/aws-lambda-quickstart/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;场景：&lt;/code&gt;现在需要开发一个前后端分离的应用，后端采用 RESTful API 最为方便，但是如果这个后端服务会在一天中的某些时候有高并发的情况，使用什么样的架构最为简单呢？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;刚思考这个问题的时候我想到的解决方案可能有以下几种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用CDN内容分发网络，减少主服务器的压力&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用LVS服务器负载均衡&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用缓存&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;硬件层 提高带宽，使用SSD 硬盘，使用更好的服务器&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;代码层，优化代码（使用性能更好的语言等&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但以上的几个方法都需要关注服务器的存储和计算资源，以便随时调整以满足更高的性能，并且高并发的请求也是分时段的，配置了更高性能的服务器在访问量变低的时候也是资源浪费。&lt;/p&gt;
&lt;p&gt;这个时候可以使用 FaaS（Functions as a Service） 架构，跟传统架构不同在于，他们运行于无状态的容器中，可以由事件触发，短暂的，完全被第三方管理，功能上FaaS就是不需要关心后台服务器或者应用服务，只需关心自己的代码即可。其中AWS Lambda是目前最佳的FaaS实现之一。&lt;/p&gt;
&lt;h2 id="aws-lambda"&gt;AWS Lambda&lt;/h2&gt;
&lt;p&gt;AWS Lambda 是一项计算服务，使用时无需预配置或管理服务器即可运行代码。AWS Lambda 只在需要时执行代码并自动缩放。借助 AWS Lambda，几乎可以为任何类型的应用程序或后端服务运行代码，而且无需执行任何管理。现在 AWS Lambda 支持 Node.js、Java、C# 和 Python。&lt;/p&gt;
&lt;h3 id="使用场景"&gt;使用场景&lt;/h3&gt;
&lt;p&gt;Lambda 常见的应用场景有以下几种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将Lambda 作为事件源用于 AWS 服务（比如音频上传到 s3后，触发 Lambda 音频转码服务，转码音频文件&lt;/li&gt;
&lt;li&gt;通过 HTTPS (Amazon API Gateway) 实现的按需 Lambda 函数调用（配合 API Gateway创建简单的微服务&lt;/li&gt;
&lt;li&gt;按需 Lambda 函数调用（使用自定义应用程序构建您自己的事件源）&lt;/li&gt;
&lt;li&gt;计划的事件（比如每天晚上12点生成报表发送到指定邮箱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下图是将Lambda 作为事件源用于 AWS 服务案例的一个执行流程图：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://media.gusibi.mobi/oXCMUsm_ZNoPkU5g5aa0OcXvvBo9_-TAB3xqUFlB4ktJlzakD_E9IA-3gQu85_QO"&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用户将对象上传到 S3 存储桶（对象创建事件）。&lt;/li&gt;
&lt;li&gt;Amazon S3 检测到对象创建事件。&lt;/li&gt;
&lt;li&gt;Amazon S3 调用在存储桶通知配置中指定的 Lambda 函数。&lt;/li&gt;
&lt;li&gt;AWS Lambda 通过代入您在创建 Lambda 函数时指定的执行角色来执行 Lambda 函数。&lt;/li&gt;
&lt;li&gt;Lambda 函数执行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这篇文章主要介绍 将 Lambda 作为事件源用于 AWS 服务 和 配合 API Gateway 创建简单的微服务。&lt;/p&gt;</description></item></channel></rss>