32

运用无服务器架构

 5 years ago
source link: http://dockone.io/article/8304?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

目前无服务器计算,也被称作无服务器架构,或无服务器,在计算领域是很热的话题。亚马逊,谷歌和微软(云计算的三巨头)都在无服务器架构领域做了大量投资,以提高对各类业务服务的持续集成能力。无服务器架构,跟普通的编程和网络书一样,日渐成为书架上常见的的主题。

不过,即使你之前接触过无服务器架构,还是要再花些时间仔细想想,以正确理解它的概念。许多人想知道无服务器架构是什么,以及它目前有哪些最佳实践。

什么是无服务器架构?

跟许多革命性技术趋势一样,无服务器架构很难用简要的一两句话概括。它是一个正变得日益重要,并且在未来的云计算,特别是企业系统,会扮演重要角色的技术。

无服务器架构是云服务提供商动态管理服务器资源分配的云计算技术。当某个条件或事件触发时,业务进程会被隔离运行。而运行业务进程需要的资源通常会由云服务商管理。通过将多样的触发器与第三方云服务、客户端逻辑和调用云服务的能力集成起来,无服务器架构可交付通常我们称为“函数即服务”(FaaS)。

开发者为何使用无服务器架构?

开发者采用无服务器架构有几个原因。但事实上,一些场景下使用传统服务器方式会有更好的效果。

不需要关心维护工作

传统服务器驱动的方式一直有本质上的业务问题和挑战。例如,应用和运行环境所在的远程服务器需要维护。维护工作包括应用补丁、安全更新和尽快纠正影响可用性的任何问题。而如果使用无服务器架构,你只需要将这些工作交给云服务商。所有的云服务商目前都提供大量的冗余或其它措施,来保证极高的可用率。

成本

对许多业务来说,无服务器架构最大的卖点是成本。与租用物理机和长期维护它们相比,无服务器架构非常节省。事实上,无服务器技术采用了与传统服务器架构完全不同的计费方式。

如果租用物理机,你要为相应配置的服务器及其可用资源的占用买单。 相反的,无服务器提供商是基于执行次数收费,即按资源计费。云服务商会按你选的套餐分配一定的时间。如果你要做更多执行,那段时间里可使用的内存也是可配的。每毫秒需求的内存越多,套餐也就越贵。

环境

无服务器云的配置很简单,配置多个不同环境跟配置一个一样容易。因为无服务器计算以每次执行为基础,在不同架构下使用不同执行调用就很容易。这也意味着你完全不需要担心不同环境的配置和状态监控。

缺点有什么?

没有一种技术是完美的。当然会有一些条件和场景下,传统服务器架构会比无服务器方案效果更好。

网络

在网络应用领域,无服务器架构有一个缺陷——即无服务器函数一般只能通过私有API来访问,那么就需要配置API网关。如果是无服务器环境,你不能通过普通的IP访问到这些服务。对于需要传统网络能力的应用,传统服务器架构无疑是正确的选择。

超时限制

无服务器架构中的超时限制指的是你可以执行函数的时长。大部分无服务器架构提供商给的最大时长是300秒。任何需要执行更久或可能执行更久的应用都不适合使用该架构。

使用场景

UI驱动的应用

想象一个连接在线零售商的电商应用,例如一个衣店。如果使用传统服务器架构,用户要使用其联网设备,连到该商店的服务器上,然后再访问部署在上面的数据库。该数据库会包含业务和产品等相关的所有信息。部署在服务器上的应用,会提供给用户一个访问服务器和下单的使用界面。

如果使用无服务器架构,结构会变得很不同。购买和搜索功能可被API网关分开来访问隔离的不同的函数,而不是由用户访问衣店的物理服务器。

APIs

无服务器计算的一个简单应用是配置给单页应用或其它服务提供数据的REST APIs.

REST APIs一般不难创建。往往你只需使用简单的web框架,将数据转换为你需求格式(一般是JSON)的库和提供后端数据访问的胶水代码。而如果使用无服务器架构,开发者只需关注API代码的编写和部署,而非其他。

在REST API里一般要人工配置的功能,如自动扩容以满足业务需求,在无服务器架构下可以被自动化地完成。而且,已成为云计算特征的按资源付费模式,意味着几乎接近与无部署的最小的API获取成本。

最佳实践

像其它任何技术应用,当你采用一些最佳实践时,才能从无服务器架构中获得最大的收益。以下是当考虑怎样设计和实现无服务器架构时,你应当了解的忠告。

1、使用一个计算服务,以实现按需部署。成为真正的无服务,你要确保你选的云服务提供商有可实现你目标的计算服务。只要你必须依赖物理机、虚拟机或你自己创建的容器,你就与无服务器架构背道而驰。

2、编写无状态和单一目的的函数。当你为无服务器架构编写函数时,请确保每个函数服务于单一的目的,并且正确的实现它。许多无服务器配置采用不同的函数以组成微服务。

3、基于PUSH和事件驱动的流水线。如果你要执行更复杂的计算任务,可创建事件驱动和基于PUSH的流水线,这样不同服务可轻易的访问彼此。

无服务器架构使我们窥见了云计算未来的样子。现在云上有大量服务,存储和能力,无服务器计算的发展具有无限的可能性。

原文链接: https://dzone.com/articles/lev ... cture翻译:郭小波


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK