Serverless

分布式系统发展史

本秂侑毒 提交于 2021-02-09 00:09:24
分布式系统从最早的数据共享需求,发展到现在的 serverless 架构。它伴随着技术的发展与公司实际需求变化而演进。现在的云服务提供商简化了分布式系统开发的复杂性,让应用开发者只需关注开发,而把基础设施管理交给大型的云服务提供商。回顾分布式系统发展的历史,了解容器技术革新的原动力。 分布式系统(确切地说应该是分布式计算机系统)从它诞生到现在已经过去了很长的时间。在很久以前,一台电脑一次只能完成一项特定的任务。如果我们需要同时完成多项任务,则需要多台计算机并行运行。但是,并行运行并不足以构建真正的分布式系统,因为它需要一种机制来在不同计算机或者那些运行在计算机上的程序之间进行通信。这种在多台计算机之间交换 / 共享数据的需求催生了面向消息通信的想法,即两台计算机使用包含了数据的消息来共享数据。文件共享、数据库共享等其他机制当时还没有出现。 接着,我们进入了多任务操作系统和个人电脑的时代。利用 Windows、Unix、Linux 等操作系统,我们可以在同一台计算机上运行多个任务。这使得分布式系统开发人员能够在一台或者几台通过消息传递连接的计算机内构建和运行整个分布式系统。这催生了面向服务的架构(SOA),其中每个分布式系统可以通过一组集成在一台计算机或多台计算机上运行的服务来构建。我们通过 WSDL(用于 SOAP 协议)或 WADL(用于 REST 协议)等语言适当地定义服务接口

Knative 入门系列4:Eventing 介绍

∥☆過路亽.° 提交于 2021-02-08 23:50:23
作者:Brian McClain & Bryan Friedman 译者:韦世滴 审校:孙海洲、邱世达、王刚、周雨青、宋净超 Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。Getting Started with Knative 是一本由 Pivotal 公司赞助 O’Reilly 出品的电子书,公众号后台回复“ knative ”获取英文版下载地址。本书中文版由 ServiceMesher 社区自发翻译系列文章,这是该系列的第4章。 到目前为止,向应用程序发送基本的 HTTP 请求是一种有效使用 Knative 函数的方式。然而,无服务器的松耦合特性同时也适用于事件驱动架构。也就是说,可能在文件上传到 FTP 服务器时我们需要调用一个函数;又或者,在我们进行物品销售时需要调用一个函数来处理支付和库存更新的操作。与其操心我们的应用程序或函数监听上述事件的逻辑,不如当那些被关注的事件发生时,让 Knative 去处理并通知我们。 如果要自己实现这些功能则需要做很多工作并要编写实现特定功能的代码。幸运的是,Knative 提供了一个抽象层使消费事件变得更容易。Knative 直接提供了一个“事件”,而不需要你写特定的代码来选择消息代理。当事件发生时应用程序根本无需关心它来自哪里或发到哪去,就是这么简单。为实现这一目标

输入几行代码,轻松迁移 SpringBoot 应用上云

怎甘沉沦 提交于 2021-02-08 15:29:06
Spring Boot 是由 Pivotal 团队提供的框架,用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置,因此 Spring Boot 框架也成为了当前非常流行的框架。 如今,您可以通过 Serverless 应用控制台 ,进行极其简单的代码改造,就可以迁移您的 SpringBoot 应用上云。 功能优势 低改造成本: Serverless 组件自动帮助用户完成框架上云的适配转换,用户只需聚焦业务核心代码,进行极少的代码改造,即可完成云端部署。 应用层级资源展示与管理: 部署成功后,用户可以方便地通过 Serverless 应用控制台将查看和管理创建的云端资源,无需多个页面切换,实现多资源的集中管理。 代码持续更新: 支持持续构建,当文件夹上传到的内容有更新时,可以自动触发重新部署。 应用层级监控图表: 提供了应用层级的监控能力,用户不仅可以看到每个资源的调用次数、错误次数等信息,还可以看到应用层级的监控指标,方便运维。 根据以下教程步骤,快速体验框架迁移: 部署前提:账号已开通 Serverless Framework: https://console.cloud.tencent.com/sls 与 Coding DevOps: https://console.cloud.tencent.com

How to share code in serverless with Python properly?

坚强是说给别人听的谎言 提交于 2021-02-08 13:49:15
问题 I'm trying to find the best approach for robust serverless development with Python. The project is divided into multiple services using the serverless framework and versioned in a monorepo. Here's the structure I'd like to have: service_1/ serverless.yml handler.py service_2/ serverless.yml handler.py shared module_a.py module_b.py module_a and module_b comprise shared logic, which should be available for both services. So far I've found 2 approaches: wrap shared code in an installable

Serverless+Webpack: include .pem files in ZIP

僤鯓⒐⒋嵵緔 提交于 2021-02-08 10:57:29
问题 I try to deploy my lambda function to AWS using serverless. Everything works fine but the function cannot be executed because two files are not found (thats what fs.readFileSync says). I include them with the following lines in the serverless.yml: provider: name: aws runtime: nodejs10.x stage: dev region: eu-central-1 package: exclude: - .env include: - src/config/push-cert.pem - src/config/push-key.pem When I look in the .zip file which is uploaded to S3, both .pem files are not included. I

Knative入门系列6:Knative的使用

笑着哭i 提交于 2021-02-08 05:15:31
作者:Brian McClain & Bryan Friedman 译者:殷龙飞 审校:孙海洲、邱世达、王刚、宋净超 Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。Getting Started with Knative 是一本由 Pivotal 公司赞助 O’Reilly 出品的电子书,公众号后台回复“ knative ”获取英文版下载地址。本书中文版由 ServiceMesher 社区自发翻译系列文章,这是该系列的第6章。 通过前面的章节已经扎实掌握 Knative 的组件了,现在是时候开始研究一些更高级的主题了。Serving 为如何路由流量提供了相当大的灵活性,还有其他的构建模板使构建应用程序变得容易。只需几行代码即可轻松制作我们自己的事件源。在本章中,我们将深入研究这些功能,让我们的代码在 Knative 上更容易地运行。 创建和运行 Knative Services 第 2 章 介绍了 Knative Service 的概念。 回想一下,Knative 中的 Service 是单个配置和路由集合的组合。在 Knative 和 Kubernetes 体系内,它最终是 Pod 中的 0 个或多个容器以及其他使您的应用程序可寻址的组件。所有这些都由具有强大流量策略选项的路由层支持。

How to add CloudWatch Lambda Insights to serverless config?

Deadly 提交于 2021-02-07 14:30:30
问题 How to add CloudWatch Lambda Insights to serverless config? I don't want to do this manually, so I expect this to be an option. I've added tracing like this: tracing: lambda: true But this only enables AWS X-ray and not the other option. 回答1: I found out that it isn't a setting but a layer in the lambda. I managed to create it with this piece of code: provider: name: aws iamManagedPolicies: - "arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy" functions: functionName: layers

How to add CloudWatch Lambda Insights to serverless config?

此生再无相见时 提交于 2021-02-07 14:30:10
问题 How to add CloudWatch Lambda Insights to serverless config? I don't want to do this manually, so I expect this to be an option. I've added tracing like this: tracing: lambda: true But this only enables AWS X-ray and not the other option. 回答1: I found out that it isn't a setting but a layer in the lambda. I managed to create it with this piece of code: provider: name: aws iamManagedPolicies: - "arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy" functions: functionName: layers

Can I use AWS API Gateway as a reverse proxy for a S3 website?

六眼飞鱼酱① 提交于 2021-02-07 04:23:11
问题 I have a serverless website on AWS S3. But S3 have a limitation that I want to overcome: it don't allow me to have friendly URLs. For example, I would like to replace URL: www.mywebsite.com/user.html?login=daniel With this URL friendly: www.mywebsite.com/user/daniel So, I would like to know if I can use Lambda together with API Gateway to achieve this. My idea is: API Gateway ---> Lambda function ---> fetch S3 resource The API Gateway will get ANY request, and pass information to a Lambda

什么是无服务器(serveless)?

守給你的承諾、 提交于 2021-02-06 12:32:08
传统上,我们已经构建并部署了 web 应用程序,对这些应用程序,我们可以对服务器发出的 HTTP 请求进行一定程度的控制。我们的应用程序运行在该服务器上,我们负责为其配置和管理资源。但这会产生一些问题: 1、即使没有处理任何请求,我们也要保持服务器正常运行。 2、我们负责服务器及其所有资源的正常运行及维护。 3、我们还负责对服务器进行适当的安全更新。 4、随着使用量的扩张,我们还需要管理服务器的扩展,结果是,当我们没有太多使用量时,我们要将其减少。 对于较小的公司和个人开发者而言,这可能需要处理很多工作。这使得我们无法专注于我们更重要的工作,构建和维护实际的应用程序。在大型组织中,这是由基础设施团队处理的,并且通常这不是开发者个人的责任。但是,为此所需的过程最终可能减慢开发时间。因为你不能不与基础架构团队合作来帮助你启动和运行而直接继续构建应用程序。作为开发者,我们一直在寻找一种解决这些问题的方法,这就是无服务器的来源。 无服务器计算 无服务器计算(或简称 serverless),是一种执行模型,在该模型中,云服务商(AWS,Azure 或 Google Cloud)负责通过动态分配资源来执行一段代码,并且仅收取运行代码所使用资源的费用。该代码通常运行在无状态的容器中,能够被包括 HTTP 请求、数据库事件、队列服务、监控报警、文件上传、调度事件(cron 任务)等各种事件触发