一个新技术的出现不是无中生有,从石头中凭空蹦出来的,而是在原有基础上的继承和发展。

Serverless也不例外,我们回顾下IT基础设施的发展,就会发现,Serverless自然就会浮现出来,你自己就可以发明它(但是却实现不了它)。

局域网时代

上世纪90年代,你是一家IT部门的负责人,公司需要建立一个信息管理系统,

这时候的系统都是局域网的, 是C/S模式的, 业务逻辑主要在客户端软件中, 需要被安装到各个电脑上去,然后访问同一个数据库。

在部署这个系统之前,你需要做很多的工作:

搭建局域网, 购买交换机,路由器。

买服务器,安装操作系统,比如Window NT

安装数据库软件,例如Oracle。

然后再把那些Delphi/VB/PowerBuilder写的客户端安装到电脑上, 整个系统跑起来了。

数据中心

C/S模式的很大弊端就是客户端更新特别麻烦,服务器能支撑的用户也不大。

Web兴起后,你们公司的应用也与时俱进,从C/S模式变成了B/S模式,用户主要使用浏览器来访问应用,业务逻辑在服务器端运行。

这时候,你还需要买服务器,然后放到数据中心去托管,毕竟那里的条件更好,更稳定。

网络不需要自己来搭建了, 掏钱买数据中心的网络带宽就好。 还需要自己安装软件, 比如Linux操作系统,Tomcat, Ngnix, MySQL等等。

随着功能的增加,你还需要新的服务器来处理缓存,搜索等功能。 为了应对高并发,还需要分布式,负载均衡,数据复制。

你需要仔细地规划, 看看这些缓存,搜索,数据库, 负载均衡等都需要什么样的服务器,有些要求CPU很强,有些要求内存很大,有些要求硬盘很快。

总之,运维这样一套系统,非常麻烦。

虚拟化

但是,如果你的网站没人访问了,这一套复杂的系统,这些昂贵的服务器就会变成摆设,你想卖都很难卖掉,这是巨大的浪费。

一个想法就会浮现出来:为什么要用物理服务器?  谁要是能提供虚拟机给我就好了! 用完了就可以“扔掉”!

于是那些有实力的大厂就这么做了,把这些物理服务器的计算能力,存储能力统一管理,统一调配,对外提供的就是虚拟机。

他们把这种方式叫做云计算,你使用了云计算以后,有很多好处:

物理服务器不用买了,申请虚拟机就可以了。什么样的CPU, 多少内存,多大的硬盘,对应的价格也不同。

操作系统会按照你的要求自动给你安装好。网络自然不用操心, 要多大带宽直接买就行。

对于PaaS来讲,连运行时环境都安装好了,直接使用就行。

这些虚拟机可以包月,包年计费。但是,如果没有人访问你的应用,没有流量,你也得掏钱。

理想模式

想必你的脑海中已经浮现出了解决方案:

  1. 不要再考虑什么物理服务器/虚拟机了, 把代码上传到云端,直接运行。

  2. 按使用情况(如CPU时间、内存大小)来收费

(IBM: 我的大机一直按使用情况收费,你们玩了几十年,终于回到我这里了 ^-^)

如果没有人访问你的应用,就不要部署它,这样只会占用一点点存储空间,不用使用CPU和内存;如果有人访问,把应用部署到某个服务器上,执行这次请求,返回给用户,然后卸载这个应用。

和之前的方式相比,最大的特色是即用即走,不会在服务器/虚拟机中常驻。

但是这么做可能吗? 不行,应用的粒度太大,一个应用几十、上百模块,每个请求来了就部署整个应用,只执行那么一点儿代码, 然后就卸载掉。 如果每个请求这么来回地部署和卸载,你是疯了吗,兄弟?

那微服务呢?粒度还是太大 ! 如果是微服务中的一个API,或者说就是一个“函数”呢?  这个粒度应该差不多了。

这里说的函数到底是什么? 需要看具体的业务来划分,比如搜索产品,图像转换, 它需要足够小,足够单一,能快速启动,运行,卸载。

一个“函数”真的只做一件事情,并且不保持状态。 这样一来它可以轻松地被扩展到任意多的服务器/虚拟机/docker容器中去。请求多了就扩容,请求少了,就收缩,请求没了,就卸载,实在是太爽了。

这种方式现在称为Serverless,并不是说没有服务器,而是说服务器对用户来说是透明的。 应用的装载、启动、卸载,路由是需要平台来搞定。

Serverless 的特点

Serverless的开发模式和运行模式类似这样:

1. 程序员编写完成业务的函数代码

2. 上传到支持Serverless的平台,设定触发的规则。

3. 请求到来,Serverless平台根据触发规则加载函数,创建函数实例,运行

4. 如果请求比较多,会进行实例的扩展,如果请求较少,就进行实例的收缩。

5. 如果无人访问,卸载函数实例。

如果有多个函数,怎么确定调用哪一个? 肯定需要一个东西来转发一下。

(微服务: 我就是这么玩儿的啊!)

如果业务比较复杂,一个函数搞不定怎么办? 可以把多个函数给编排起来!

(SOA: 我早就这么做了!)

按需装载,自动伸缩,不用你苦逼地去规划硬件,安装软件,还可以按照使用情况付费,这么好的东西,我们是不是马上投入serverless的怀抱?

慢着!

为了达到上面的目标,你必须得牺牲一个很重要的东西:状态

函数没有状态的,每次启动都可能会被部署到一个全新的“服务器”中,这就有两个问题:

  1. 用户的会话状态肯定是无法保持的,像session sticky 这样的功能就别想了。

  2. 函数无法做本地的持久化,没法访问本地硬盘的任何东西(服务器看不见了,怎么能看见硬盘呢?)。

所有想持久化的东西必须得保存到外部的系统或者存储中,例如Redis,MySQL等。 很明显,这些东西也应该以“服务”的方式来呈现,即Backend as a Service (BaaS)。

如果你的应用无法拆分成无状态的函数,是无法享受Serverless带来的种种好处的。

Serverless更适合那些无状态的应用,例如图像和视频的加工,转换, 物联网设备状态的信息处理等等。

我建议你了解一点儿Serverless相关推荐

  1. 从ABAP Netweaver的SICF到SAP Kyma的Lambda Function

    ABAP Netweaver里的事务码SICF是Jerry做原型开发时非常喜欢使用的一个工具:但凡遇到需要把ABAP系统里的资源以服务的方式暴露出来的场景,Jerry都喜欢在SICF里创建一个服务节点 ...

  2. 世界上有两种公众号,我坚持做第二种

    世界上有两种公众号,一种喜欢追热点,热点过去,文章的价值也就随风而逝.另外一种不追热点,写一些能够经受时间考验的文章. 区分它们的方法很简单: 你看看他会不会定期发文章目录. 相比而言,第二种比较吃亏 ...

  3. 写技术文章也挺好的,虽然没有多少人看

    微信改版信息流以后,正式进入了"拼标题"时代,如果没有一个吸引眼球.摄人心魄,不点进来心里就痒痒的标题,那阅读量肯定是嗖嗖地下降. 偏偏我又不擅长此道,绞尽脑汁想了个自以为是10w ...

  4. Serverless Kubernetes:理想,现实与未来

    作者 | 易立.张维 来源 | 阿里巴巴云原生公众号 导读:当前 Serverless 容器的行业趋势如何?有哪些应用价值?如果 Kubernetes 天生长在云上,它的架构应该如何设计?Server ...

  5. 为什么下一个十年的主战场在 Serverless?

    作者 | 不瞋  阿里云 Serverless 负责人 "唯有超越,才能让我们走下去." 这是不瞋在阿里的第十年.从 2010 年加入阿里云,不瞋参与了阿里云飞天分布式系统的研发, ...

  6. 为什么下一个十年的主战场在Serverless | 云原生Talk

    简介:今天我们推出了一个新的栏目「云原生Talk」,聚焦云原生时代下,企业数字化转型的路径和实践方法.站在2020年这个节点,有太多企业数字化转型的故事值得被记录,无论是互联网与科技企业,还是(新)零 ...

  7. 为什么说下一个十年的主战场在Serverless?

    作者 | 不瞋,阿里云 Serverless 负责人 "唯有超越,才能让我们走下去." 这是不瞋在阿里的第十年.从2010 年加入阿里云,不瞋参与了阿里云飞天分布式系统的研发,历任 ...

  8. 亚马逊云科技 Build On - Serverless助力企业降本增效

    亚马逊云科技 Build On - Serverless开启零售新篇章 梅开三度 活动体验 实验 问题总结 一点建议 咖啡案例实验 Serverless学习 总结 梅开三度 Hi,作为一名Builde ...

  9. [文摘20071224]七条不可不知的生存法则

    法则一:了解别人,争取支持 请想想商政以至其他各界的领袖人物,他们大都知道怎样使自己要做的事获得别人的支持.他们会说服别人接纳其观点,也知道别人会怎样做. 你要想获得别人的支持,你必须知道他们最重视的 ...

最新文章

  1. 添加打印机还显示脱机_win7系统电脑连接打印机后显示脱机怎么办
  2. 二叉树后续遍历非递归
  3. mysql5.7.20+初始化_MySQL5.7.28 初始化数据库
  4. 海量服务 | 论服务器极致化海量运营交付的未来
  5. java kmp算法_KMP算法java版实现
  6. LeetCode 1751. 最多可以参加的会议数目 II(DP + 二分查找)
  7. ansible 并发设置_如何使用Ansible通过Prometheus设置系统监视
  8. Linux下Kafka单机安装配置
  9. asp.net2.0学习历程 菜鸟到中级程序员的飞跃[z转]
  10. arcgis for flex 学习笔记(一)
  11. 无线投影之Miracast技术 收集
  12. CUDNN下载速度慢解决方法
  13. visio软件接口流程图_绘制流程图——Visio可以让你事半功倍哦!
  14. webstorm导致CPU占用率高
  15. oracle odi 资料档案库访问期间出现未分类的异常错误,ODI11g问题汇总
  16. jcp jsr_Oracle提交了第三次JCP改革JSR,以提高透明度
  17. docker搭建企业级habor仓库
  18. 【收藏】2019届互联网大厂公司校招薪资汇总,基本年薪都在20万以上
  19. OPPO Pad 2 参数 OPPOPad 2评测怎么样
  20. 好看实用的便签条工具推荐

热门文章

  1. 【python图像处理】图像的读取、显示与保存
  2. 【转】eclipse android 设置及修改生成apk的签名文件 -- custom debug keystore
  3. 一种创建进程间COM来启动IE的方式
  4. 用户目录更改后显示为-bash-3.1#
  5. 两台xenserver 同一个vlan中的vm 不能ping通?
  6. 关于DataGridView的数据源绑定字符串两个值得注意的问题
  7. Matlab 接受字符串并转为符号表达式,inline函数,匿名函数形式的方法汇总
  8. h5 canvas 显示rgb
  9. WIN10 OpenGL GLFW+GLAD 开发环境搭建
  10. 静态链接库、动态链接库和动态加载库