赞
踩
无服务架构(Serverless Architecture)即无服务器架构,也被称为函数即服务(Function as a Service,FaaS),是一种云计算模型,用于构建和部署应用程序,无需关心底层服务器的管理。
在无服务器架构中,开发人员编写单独的函数或函数集合,这些函数以事件驱动的方式触发,并在需要时自动扩展,而无需自己管理服务器基础架构。
无服务器是让开发者只需要纯粹地关注业务:
与单体架构、微服务架构不同,无服务架构天生的一些特点,比如冷启动、 无状态、运行时间有限制等等,决定了它不是一种具有普适性的架构模式。
对一些适合的应用来说,使用无服务架构确实能够降低开发和运维环节的成本,比如不需要交互的离线大规模计算,又比如多数 Web 资讯类网站、小程序、公共 API 服务、移动应用服务端等,都跟无服务架构擅长的短链接、无状态、适合事件驱动的交互形式很契合。
但是对于那些信息管理系统、网络游戏等应用来说,又或者说对所有具有业务逻辑复杂、依赖服务端状态、响应速度要求较高、需要长连接等特征的应用来说,无服务架构至少在目前来看并不是最合适的。
无服务天生“无限算力”的假设,就决定了它必须要按使用量(函数运算的时间和内存)来计费,以控制消耗算力的规模,所以函数不会一直以活动状态常驻服务器,只有请求到了才会开始运行。
这导致了函数不便于依赖服务端状态,也导致了函数会有冷启动时间,响应的性能不可能会太好(目前,无服务的云函数冷启动过程大概是在百毫秒级别,对于 Java 这类启动性能差的应用,甚至能到秒级)。
无服务和“微服务”以及“云原生”时代之间并没有继承替代关系,也不要产生”无服务比微服务更加先进”的错误想法。
软件开发的未来,不会只存在某一种“最先进的”架构风格,而是会有多种具有针对性的架构风格并存。
无服务架构更加抽象和自动化,适用于处理事件驱动的、瞬时性的任务。微服务架构更适合长时间运行的、复杂的应用程序,但需要更多的基础设施管理。
在某些情况下,这两种架构可以结合使用,以满足不同类型的需求。选择哪种架构取决于应用程序的性质、需求和团队的技能。
云计算是大势所趋,今天信息系统建设的概念和观念,在较长尺度的“明天”都是会转变成适应云端的。 Serverless+API 的这种设计方式,随着云计算的持续发展,将会成为一种主流的软件架构形式,无服务到时候也应该会有更广阔的应用空间。
如果说微服务架构是分布式系统这条路当前所能做到的极致,那无服务架构,也许就是“不分布式”的云端系统这条路的起点。
今天,我们已经能初步看见一些使用无服务的云函数去实现微服务架构的苗头了,所以把无服务作为技术层面的架构,把微服务视为应用层面的架构,这样的组合使用也是完全合理可行的。
软件开发的未来,多种架构风格将会融合互补,“分布式”与“不分布式”的边界将会逐渐模糊,两条路线将会在云端的数据中心交汇。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。