无服务器(Serverless)本质上就是虚拟主机(VirtualHost)的一次升华
文章声明:此文基于木子个人理解撰写,欢迎各位读者在评论区留言、吐槽、拍砖@-@。
生产环境:Serverless
问题关键字:Serverless
Serverless 是什么?
无服务器(Serverless)当前软件架构中最火的技术实现。它从概念初起到现在,也不过近7年的历史,而且它本身来说是一个大的运维+应用技术栈的实现,其中包括:服务器硬件、操作系统、存储、数据库、中间件等一系列产品。但它真的是一个新的技术实现吗?还是只是一个新瓶装旧酒?
在面对一个新的名词定义的时候,很多人朋友都感到新奇,甚至很多公司开始蠢蠢欲动,想一股脑的都上到自己公司的系统中去,对于它都没有一个足够的认知。当然这不能够怪企业,企业为了生存,在对投资人画饼的时候,得用到一些新鲜名词,尤其做互联网技术的企业:Cloud、BigData、Serverless、AI、VR等等。似乎没有一个高大尚的名词,很难得到更多的投资。
Serverless到底是什么?维基百科上是这样子写的:“无服务器运算(英语:Serverless computing),又被称为功能即服务(Function-as-a-Service,缩写为 FaaS),是云计算的一种模型。以平台即服务(PaaS)为基础,无服务器运算提供一个微型的架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供。”而在这当中,最早提供对应服务的应该是AWS的Lambda。其后各大公有云厂商都开始推出属于自己的Serverless Framework。Google Cloud Functions、Microsoft Azure Functions、IBM OpenWhisk、Aliyun SAE等等。
在AWS上木子找到了一篇关于Serverless架构的前世今生,其中这样描述Serverless,“无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务,客户端逻辑和服务托管远程过程调用的组合。”最重要的一点是,他这里也提到了,这项技术的目标并不是为了实现真正意义上的无服务器,而是希望能通第三方的基础服务,来解放客户的运维工作,使客户可以更好的关注于自身业务的本身(这正是公有云厂商的价值所在及很多客户的痛点)。目前阿里云、腾讯云、AWS、Azure等公有云厂商都有提供对应的服务,可能还是有很多朋友不能够理解,木子在这里再大胆的做一个类比,其实Serverless就是VirtualHost的一次升华,可能有的朋友会呵呵^_^,但我们仔细抽丝剥茧,会发现就是这么一回事。
Serverless Function
先来说说无服务函数(Serverless Function),它可以大致分为两大类:公共类无服务函数和自建无服务函数。本质上就是公共类的函数计算或者说单一业务处理逻辑的实现。你把业务丢到无服务函数里,它给你计算处理之后,返回结果给到你。回过头来看,那我们是不是可以在VirtualHost里面丢一个函数应用,由这个VirtualHost里的函数应用计算处理之后,返回结果给到我们了?而这个过程中唯一的区别就是算力问题,无服务函数后端提供的算力可能比你用VirtualHost的算力要强成千上万倍(当然系统***、电力故障、容灾等不在我们这次的讨论范围)。另一个就是公有云厂商提供的无服务函数接口能够和多种开发语言对接,这个其实本质技术上没有太多难点,公共类的无服务函数计算本身提供的是标准化的组件、中间件和各种方法或类的解耦。
Serverless Framework
前面我们说到了Serverless Function,下面我们来聊聊Serverless Framework,无服务框架我们可以理解为一堆无服务函数+中间件+负载均衡+业务逻辑+数据库的集合。通过上面的定义我们不难发现,是不是我们可以把它说成是一堆的虚拟主机+中间件+负载均衡+业务逻辑+数据库的集合了?在没有无服务框架的时候,我们通过不同种类的虚拟主机(asp、asp.net、php等)自建无服务函数体系(当然这里没有办法提供更加高端的无服务函数计算),与自身业务逻辑进行整合,从何实现类无服务应用框架,也不是不可以的事情。只是现在公有云厂商将其拆分得更细,并提供公共类服务,降低了服务提供的门框而已。下图是一个简单的Serverless Web应用的实现,它可以帮助我们更好的了解Serverless。当然Serverless Framework不仅仅包括Serverless Web,还有很多种不同类型的实现,如:Serverless K8S、Serverless 物联网架构等等。
下面我们再来解读一段关于Severless的说法:“最开始无服务器架构试图帮助开发者摆脱运行后端应用程序所需的服务器设备的设置和管理工作。”这不就是虚拟主机干的事情吗?你把代码直接ftp上去,然后打开网站就可以了,至于服务器在哪里,运行状态怎么样,是否有硬件故障,这都不是我们需要关心的事情,对应的虚拟主机提供商会帮我们解决。
Serverless 真的不需要运维吗?
Serverless真的不需要运维吗?这就如同共产主义,你可以无限接近,但真正做到很难。业务逻辑是第三方云服务提供商无法了解的,所以你会发现,目前的无服务框架还只能够提供比较基础的服务,或者说业务逻辑比较简单的一些业务场景的实现(当然这和目前无服务使用方的技术能力也有很大的关系)。但随着无服务框架的需求越来越旺盛,中间所暴露出来的问题也就更多了,而为了解决这些问题,无服务框架厂商又会提供一系列的诊断、分析、监控类工具,来辅助运维、开发人员进行业务故障分析,这也就是无意识中形成了一整套的无服务框架运维、开发体系,回过头来看,我们似乎又回到了原点(从技术上来说),但当我们站在业务的角度来看却不然,你的系统业务处理能力将有系数倍的增加,而这就是Serverless的魅力所在。
简而言之,言而总之,无服务器架构的出现不是为了取代传统的应用。然而,从具有高度灵活性的使用模式及事件驱动的特点出发,开发人员、架构师、运维人员应该重视这个新的计算、运维及开发应用模式,它可以帮助我们达到减少部署、提高扩展性并减少代码后面的基础设施的维护负担。而这也可能是开发人员、架构师、运维人员弯道超车的一个很好的机会,把握前沿技术、紧跟脚步,时间终将给你一个满意的答复。
关于Serverless我们就简单聊到这里,中间可能存在一些木子的个人武断或偏见,欢迎各位读者在评论区留言、吐槽、拍砖@-@。
五平台同步更新:
博客: https://www.oubayun.com
知乎: 欧巴云
51CTO: 欧巴云
云+社区: 欧巴云
微信公众号: 欧巴云

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
玩转直播系列之从 0 到 1 构建简单直播系统(1)
一、前言 随着5G时代的到来,音视频行业也可能迎来一个行业的春天,直播则是新视频行业一直以来的一个重要的产品形态,从最初的秀场直播,游戏直播,到今年由于疫情,目前比较火的在线教育直播,带货直播等,各类新的直播形式则是越来越多的展示在大众面前。 作为技术开发的我们,今天我们一起简单的了解一下,如何快速搭建一套最简单的直播系统,简单地了解一下主流直播的架构模型。 二、推拉流模型 首先我们先看一张完整的直播推拉流的模型图,我们可以很清楚地看到直播宏观上的架构模型图。 2.1 直播三个主要模块 推流模块 推流模块主要分为音视频数据的采集,如果是秀场类直播,可以做美颜滤镜相关功能,用来提升直播的画面品质和用户体验,最后通过编码压缩,降低音视频数据的体积,最后通过流媒体传输协议将数据按照固定格式传递到RTMP服务器,这样整个推流端的工作就完成了。 RTMP服务端模块 传统意义上的RTMP服务器其实可能就只有转码的功能,将推流端传递过来的数据,转成flv等网络格式的数据文件,方便播放端的观看,不过目前云商都提供了一整套的解决方案,例如清晰度转码,内容健康检查,直播封面的生成,数据统计,录制回放等功能...
- 下一篇
大型互联网分布式微服务云数字化电商平台分析规划-Spring Cloud电子商务解决方案
1. 导语 近期公司孵化了一个互联网产品(多租户b2b2c电子商务平台),随着业务发展,产品运营后用户数据量(过千万)、业务数据量(过100亿)较大,技术团队配合产品、运营快速满足企业业务需求,还要考虑产品涉及的资金安全、消息的及时性、业务的制动化处理,我们选择鸿鹄cloud分布式云架构平台作为公司产品核心企业架构并对b2b2c电商的业务进行解耦规划。 2. 产品平台规划 微服务注册中心(分布式集群部署)、微服务配置中心(分布式集群部署)、服务网关平台(分布式集群部署)、微服务监控平台、SSO单点登录平台(分布式集群部署)、微服务相关组件(分布式集群部署)、后台管理平台、 定时调度平台(按照业务分库、分表部署) 业务微服务(分布式集群部署、超过20个微服务) MQ消息中间件业务平台(分布式集群部署) MySql主从、读写分离(高可用部署)、Redis分布式缓存(高可用) 3. 服务结构: 通用服务:commonservice 对spring Cloud组件的使用&封装,是一套完整的针对于分布式微服务云架构的解决方案,包括: Eureka服务注册中心、Config配置管理中心、Z...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池