文档章节

数人云|史上最全,35个平台、框架、数据库细说什么是Serverless

数人云
 数人云
发布于 2017/08/07 18:10
字数 3165
阅读 11
收藏 0
点赞 0
评论 0

数人云:Serverless,这个新兴的技术正在逐步深入开发领域,它为应用提供大量基础设施,减少开发人员的部署问题,同时它还能解决敏捷开发中,交付具有预算约束的可伸缩应用的问题。

本文将概述Serverless的发展历史、基本概念、应用、框架和优点。

爷爷,啥是虚拟机?

准备好如何回答这个问题吧,没准几十年后就得在饭桌上回答儿孙们,因为未来的开发人员可能永远都不需要启动实例,也不需要去碰大型服务器。

(回忆脸)虚拟机呀,就是一切开始的地方,一旦任何人在一台独特又普通的物理机上运行多个操作系统,就如同打开了一扇新世界的大门。

又过了一段时间,如同亚马逊这些老牌公司,开启了云计算的革命,在任何地方用一张信用卡即可用它们提供的几近无限的虚拟机,啥?你娃说还不够?后来又出现一头鲸鱼,那是容器的黄金时代,最开始的几年是挺难的,因为人们得花一些时间才能真正理解这个概念,然后,然后就是Serverless了……

那些孩子们可不会听这些老掉牙的唠叨,他们都去玩虚拟现实游戏去了,独留你在那里长吁短叹不断追忆。

功能即服务

FaaS是理解Serverless的基础概念,其定义为——

代码是在事件驱动的、短暂的和无状态的环境中运行,完全由第三方托管,本文会介绍一些AWS jargons及服务以方便阅读和理解。

  • 代码:虽然它还是那个代码,但仍有细微的差别,必须将所有需要的东西打包,如:External Libraries、ZIP文件,另外功能应该有一个被称之为处理程序的执行入口点。

  • 事件驱动:在FaaS中,每件事都会触发某种行为,举例说明,调整上传图片的大小,不需要写代码对它进行接收、存储、重新调整大小再次存储,可以触发一些代码,每次将新文件发到S3存储库时,都会对图像进行调整。还有各种事件:数据库中插入行,观察日志流、在队列中获取新消息、甚至HTTP请求等。

  • 短暂的环境:FaaS在每次调用功能时,就会构建一个全新的环境,调用处理完成后即销毁,虽然有点悲剧,但并非没有道理:第一次运行非活跃的功能是有延迟的被称之为冷启动,若过多调用功能,环境可能会进行多个执行,消除冷启动后,不会产生这个问题,另外还有成本:只按执行时间付费。

  • 无状态:在功能调用之间没有任何状态,不能在本地或内存中保存信息,处理请求的所有上下关系必须保证每次执行时可用。

  • 完全由第三方托管:无需管理服务器,截止目前,大多数Serverless厂商都提供了完整的维护服务,虽然无需搭建基础设施,但弊端是被厂商控制和锁定。

Serverless只需集成外部服务以及开发它们之间的接口,无需担忧服务器方面的管理,这也正是用事件驱动架构的关键,这段代码应该自己写还是交给第三方?某个部分能否被一个事件触发?功能是否具有正确执行所需的上下关系等等,这些问题必须要经过大量的思考和迭代实践。

Serverless平台

本文中,收集了一些公司、产品、工具以及Serverless典型的框架。可以看到这个行业随着时间的推移呈指数增长。所以从下图开始,将公司分为几个类别:

AWS Lambda

Lambda是AWS Serverless 推出的一个事件驱动平台,运行代码以响应事件和自动管理代码所需的计算资源。

IBM Bluemix OpenWhisk

IBM OpenWhisk是一个分布式的、事件驱动的计算服务。OpenWhisk运行应用程序逻辑,以应对事件或直接通过HTTP调用网络或移动应用。

Google Cloud Functions

Google Cloud Functions是一个轻量级的、基于事件的异步计算解决方案,允许开发人员构建小型专用功能响应云事件,不需要管理服务器或运行时的环境。

Azure Functions

Azure Functions是一项PaaS服务,用户无需为峰值用量做准备或者为传统的维护操作担忧。通过多种语言(例如 JavaScript、C# 和 F#)以及脚本选项(例如 Python、PHP、Bash、Batch 和 PowerShell)创建功能;一切都在基于 Web 的易用界面中实现。

Webtask

Webtask是简单、轻量级、安全的方式独立运行的后端代码,可有效减少后端需求。支持可扩展性,通过多租户系统的自定义代码,是安全可靠的解决方案。

Serverless开源框架

LeverOS 一个开源云平台,简化了复杂的基础设施和微服务框架,功能强大,便于开发人员后期开发。

Funktion(Fabric8 / RedHat) 为Kubernetes实现了基于事件的Lambda样式编程模型。Funktion的一个子集被称为RedHat“fabric8.io”。

Fission.io

Kubernetes Serverless框架,专注于开发者的生产力的提高。

OpenLambda

OpenLambda是Apache Serverless项目,基于Linux容器。OpenLambda的目标之一是探索Serverless计算的新方法。经过尝试发现OpenLambda还为时过早,不得不做一些修改和调整工作。

Iron.io

Iron.io开发了一个框架,用于事件驱动的计算和运行Serverless应用,近期已经开源。专注于交付调用API实现负载均衡和消息队列的灵活性,确定在何处部署现有的内部安全流程作业处理。

Kubeless (By Bitnami)

Kubernetes原生的Serverless Framework。

Openwhisk (By IBM)

IBM OpenWhisk运行应用程序逻辑,以应对事件或直接通过HTTP调用网络或移动应用。OpenWhisk是开源项目,管理(服务)版本称为IBM Bluemix。

Serverless框架/库

Serverless Inc

Serverless框架,允许部署自动伸缩,pay-per-execution、事件驱动的功能,不受限于公有云、私有云、混合云。Serverless Inc目前支持AWS Lambda,Apache OpenWhisk,微软Azure,扩展以支持其他云提供商。

Stdlib

作为FaaS库StdLib提供了一种简单的方法来创建、分发和发现Web服务。

SPARTA

SPARTA转换一个二进制文件注册lambda函数进入一组独立可寻的AWS Lambda功能。此外,SPARTA微服务作者提供一个机会来满足其他要求,比如在AWS执行自定义,额外的基础设施需求,监控和报警信息。

Stackhut (nstack)

StackHut将代码转变成云API。编写业务逻辑,而不管理服务器逻辑,Python和JavaScript在云中转化为可伸缩的API,方便任意集成。

Gestalt (Galactic Fog)

Gestalt是一组微服务框架,可以帮助公司构建面向未来的云原生应用。框架由三个主要的元数据层组成,负责跟踪和管理所有IT资源,基础架构层是一个可插入的容器和Lambda管理引擎,集成层是一套现成的微服务,旨在解决最常见的企业集成问题。

Effe

用来构建Serverless的开源架构,可运行在单个Lambda的功能上。

APEX

Apex可以轻松地构建、部署和管理AWS Lambda功能。通过节点可使用由AWS Lambda(如Golang)所不支持的语言,js shim注入到构建中,为测试功能、回滚部署、查看度量、跟踪日志、连接到构建系统以及更多的功能提供了各种工作流相关工具。

Distribyte

Distribyte的目标是引入Serverless的优势,允许应用程序在计算调用之间无缝地存储数据,并将数据添加到Mix Unlocks中,也可以在现有的Serverless的范围之外使用。

Serverless API 框架

Multicolour

REST API生成器,目标是为公司节省90%的成本和开发API的时间,连接功能非常强大,即使是Node.JS生态系统中最成熟的框架也无法匹敌。

Deployd

通过提供满足复杂应用程序需求的重要功能,使构建API变得简单。

Kong

可扩展的开源API层(API网关,或API中间件)。可以在任何RESTful API上运行,通过插件扩展,这些插件提供了核心平台之外的额外功能和服务。

TYK

一个快速、可扩展和开源API网关,提供了一个API管理平台,有API网关、API分析和API管理仪表板。

API Umbrella

位于API之前的代理,可以无缝地添加诸如API Key、速率限制和对任何API的分析等功能。

Fusio

开放源码的API管理平台,可以帮助构建和管理REST API。提供了所有工具快速构建不同数据源的API,同时可以自定义创建响应。

Kappa

命令行工具,可以让AWS Lambda更容易部署、更新和测试功能。开发Lambda功能有很多步骤,Kappa在试图解决这个问题。

Zappa

可以轻松地让所有的Python WSGI应用在AWS Lambda + API网关上构建和部署,将其看作Python应用的“Serverless”Web托管。这意味着无限扩展、零宕机、零维护、以及当前部署成本的一小部分。

Zapier

Zapier的自定义代码操作允许扩展Zapier的平台,使用Web上最常用的普遍的编程语言:Javascript做任何事情,运行代码响应Zapier支持的任何触发。

Stamplay

一个基于API的开发平台,授权Web开发人员在记录的时间内构建和发布全功能且基于云的Web应用。

Serverless 数据库

FireBase

Firebase是一个移动平台,可以帮助快速开发高质量的应用,扩大用户群,提高收益,它由互补的功能组成,方便根据需要进行混合匹配。

FaunaDB

一个分布式、多租户、多模型的数据库系统,具有强大的查询语言。

当然,还有 Amazon DynamoDB,Google Cloud Spanner,Microsoft Azure’s CosmosDB 和其它Serverless数据库。

Serverless 监控工具

IOpipe

高保真的度量和监控服务,允许在Amazon Lambda功能中,更好的查看的日常维护和开发Serverless应用程序。

Dashbird

Dashbird用来查看AWS Lambda的功能。可以清楚地看到服务器栈上发生的事件。该平台提供自动化的监控、日志和调用数据等服务。

Serverless 安全工具

Snyk

在Serverless环境中,Snyk可以帮助理解和保护依赖项,从查询、修复和监控节点中已知漏洞的工具开始。

Serverless 的优点

  • 成本:目前Serverless最大的优势是可以降低成本,例如,在功能运行时,只需要支付从AWS中传输的数据,每100万次请求大约需要0.20美元,因为它是按需付费的,此外,服务器维护管理的费用也被降低到接近0的水平。

  • 交付时间:在集成和低成本的支撑下,交付到市场的速度快了许多倍。

  • 无限的规模:Serverless在任何时间都可以处理任何数量的请求,自动伸缩内置到架构中,无需计划和设置,不过一定要注意的是DDOS攻击。

  • 打包和部署:不再有分层的Dockerfile和入口,Lambda只需要一个包含代码以及库的ZIP文件即可,部署也是如此。

总结

在将Serverless应用到生产环境之前,不能照搬方法,还需根据自身的实际情况做一些改变,同时还需要一个团队,愿意去面对快速发展的事物,用一些时间去学习钻研和实践测试。不管怎样,已知的一些大公司如:Netflix、Localytics、VidRoll和Square Enix等公司都已应用了Serverless,这是未来的发展趋势,正逐步进入到各个行业领域当中。

原文作者:Jonatas Baldin、Tal Kimhi 原文链接:https://cheesecakelabs.com/blog/what-is-serverless-all-about/?utm_source=tuicool&utm_medium=referral

欢迎加小数微信:xiaoshu062讨论更多serverless内容!

© 著作权归作者所有

共有 人打赏支持
数人云
粉丝 16
博文 101
码字总数 328110
作品 0
朝阳
架构师
Meetup北京报名开启|一起吹响Container+集结号

Meetup北京报名开启|一起吹响Container+集结号 数人云博客2017-08-0112 阅读 container开启 Container技术在国内的落地实践, 已进阶Container+ 8月阅兵仪式,一睹超强装备的风采, 技术圈也...

数人云博客
2017/08/01
0
0
微服务架构企业级增强产品,数人云推出统一配置中心Hawk

微服务架构企业级增强产品,数人云推出统一配置中心Hawk 数人云博客2017-11-221 阅读 架构服务产品配置 11月16日,数人云在PaaS Innovation大会上,正式发布企业应用架构管理体系EAMS,这是数...

数人云博客
2017/11/22
0
0
Serverless从零到生产(1/3)—无服务架构入门

前言 Serverless,无服务架构,彻底抛弃传统主机/虚拟主机,甚至是比容器更进一层的开发及部署理念,目前国内相关资料较少,但国外已经有数年发展 这一篇文章,会尽可能简单易懂的叙述Serve...

宇帅
2017/12/09
0
0
Serverless无服务应用架构纵横谈

一、Serverless是啥 自从互联网兴起以来,Server就成了网络的核心部件。所以围绕Server的生意圈,也发展得如火如荼。 从最早的电信托管,到虚拟机,到现在的Serverless,形成了几大阵容: 1、...

2017/12/09
0
0
2016 杭州·云栖大会 PDF 下载 | ApacheCN(apache中文网)

ApacheCN apache中文网 2016 杭州·云栖大会 PDF 下载: http://www.apache.wiki/pages/viewpage.action?pageId=2888842 预览图片如下,请点击链接跳转过去,全面支持下载,不受限制 (草。...

片刻
2016/10/28
1K
1
OSC 第 100 期高手问答 —— Apache Mesos

OSCHINA 本期高手问答( 11月25 日- 12月1日)我们请来了数人云平台负责人 @wtzhou 来解答 集群管理器 Apache Mesos 方面的问题。 周伟涛,@wtzhou ,现数人科技云平台负责人,曾就职于国际开源...

叶秀兰
2015/11/25
5.1K
21
重磅! 分布式数据库中间件 Sharding-JDBC 2.0.0 正式发布

Sharding-JDBC 2.0.0,在经过几个月的开发,和3个里程碑的迭代之后正式发布。Sharding-JDBC集分库分表、读写分离、分布式主键、柔性事务和数据治理与一身,提供一站式的解决分布式关系型数据...

亮_dangdang
2017/12/04
4.8K
38
AWS 掌门人称 “Serverless” 是软件界的下一场革命

Serverless是一种构建云应用的新方式,不需要软件开发人员操心云端配置服务器和存储系统。它其实并不是果真抛弃服务器,而是指AWS等云提供商负责基础设施方面的繁重事务,从而节省花在多余云...

智, 多趣
2017/11/29
0
0
花了 1000G,我终于弄清楚了 Serverless (上):Serverleress 是什么

花了 1000G,我终于弄清楚了 Serverless 是什么? 在过去的 24 小时,我通过微信公号的『电子书』一事,大概处理了 8000 个请求: Serverless 请求统计 大部分的请求都是在 200ms 内完成的,...

phodal
2017/11/21
0
0
如期而至的 Swarm 新工具 Crane 开源解读

中秋节前,数人云技术团队推出了一款新的基于SwarmKit技术栈的工具。大家可能都了解到数人云的容器技术栈是用Mesos驱动的,为什么在Docker刚发布最新的1.12版之后,我们要做出这个工具呢?在...

达尔文
2016/10/17
2.8K
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
13
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部