无服务器架构,并不是说不需要服务器,而是指由第三方云计算供应商以服务的方式为开发者提供所需功能,例如数据库、消息,以及身份验证等。它的核心思想是让开发者专注构建和运行应用,而无需管理服务器。 因此对一般的程序员发展是有很大的冲击的,只需要停留在业务的角度虽然加速业务的步伐,为未来业务的不确定性大大降低了风险的投入,Solomon_肖哥弹架构 希望大家能够掌握Serverless核心架构,后续会给大家讲讲Serverless架构设计原理。
Serverless
在过去的十年间,云计算获得了很大的发展,其使得用户能够通过 API 的方式非常轻松地获得近乎无限的算力,而这些算力是通过虚拟机来呈现的,这样的模式存在很多的优点,它和应用原来的开发和运行环境是兼容的,这种模式能够使得传统遗留应用非常平滑地迁移到云上。
云的第一个阶段就是基础设施云化,这里就是云托管模式。基于云上的存储、网络等基础设施来构建应用,这种模式的核心价值在于资源的弹性和成本。下一个阶段中,云的体系已经远远超越了基础设施,能够看到在各个领域都出现了很多的云服务。因此,在今天需要考虑如何利用云服务的能力,以搭积木的方式来更快速地构建应用,而不是重复造轮子,这就是云原生的模式
公有云体系正在迅速 Serverless 化
目前,主流的云计算产商的产品体系也正在迅速地 Serverless 化,这并非是对于未来的预测,而是实际正在发生的事实。下图中的数据是基于对于 AWS、微软和阿里云的产品所发布的新功能或者新服务形式的统计,可以看到绝大多数的新服务都在呈现 Serverless 化。
公有云编程模型
云计算产生了大量的服务,在效能的角度来看,这些云服务是在更高层次抽象的 Serverless 形态,这就变得非常有意义了。如果从云编程模型的角度重新来审视云产品体系,能够看到最底层是基础设施层,这一层包含两部分,分别是 IaaS 和容器。在基础设施之上就是云原生应用操作系统,K8s 是这一层的事实标准,它能够把底层 IaaS 基础设施很好地管理起来。在操作系统之上出现了非常丰富的 API,也就是全托管的云服务体系。如果看云厂商的产品体系,就会发现了云厂商提供了丰富的产品体系,包括数据库、大数据、中间件,这些都是以 Serverless 全托管模式提供服务的。
在这样具有大量云 API 的情况下,今天的问题是如何设计一个通用的计算框架能够与这些 Serverless 的云服务、云 API 产生非常紧密的连接来帮助客户快速构建弹性、高可用应用。因此在框架层就出现了 Serverless 计算,其产生的原因最主要是需要和云 API 发生紧密的化学反应,帮助用户提升应用构建和运维效率,帮助客户构建分布式、数据化、智能化的新一代的云原生应用。
云托管和 Serverless 应用差异
Serverless 计算
Serverless 计算具有四个特点:首先,不需要维护云计算基础设施,应用构建的抽象层次上升,变得更加高效;其次,能够实现实时的弹性伸缩,这样能够通过未来的数据驱动的负载感知算法能够实现既满足很低的延时,也能够实现很高的资源利用率;再次,计量模式提供了非常细粒度的按需的模式,可以实现按秒级计量,能够实现完全按需的付费模式,对于用户而言,资源利用率是 100%;最后,能够实现高可用,将这种能力内置在平台层。
Serverless 产品体系
这里做一个说明,Serverless 计算只是云厂商 Serverless 产品中的一部分,除此之外还包括存储、API、分析、中间件等。因此,从这个角度来看,Serverless 也不是一个非常新的概念,最早的 OSS 对象存储就是一个 Serverless 产品,可以看出云产品体系正在 Serverless 化,只不过最近几年出现了函数计算这样通用的 Serverless 计算平台,进而能够将 Serverless 体系产品连接起来,构建一个 Serverless 应用。
在以往,如果你想将应用程序上线,一般得提前了解它究竟需要多少台服务器、多大的存储量和数据库等。并且还需要安装应用程序所依赖的其他软件。但如果使用 Serverless,就可以让你不需要去费心布置和管理这一切
Serverless 几大特点:
- 事件驱动
- 自动扩展伸缩
- 无状态
- 无需自己管理服务器
- 低成本,按需收费,不运行不收费