一文读懂无服务器架构的优劣势 用例和选型
OpenFaaS,Kubeless,Fn,OpenWhisk等等,它们都是目前热门的无服务架构解决方案。大多数开源产品都在Kubernetes上运行。它们可以运行在云中的Kubernetes服务(KaaS)或你的内部Kubernetes集群上。如果部署在内部的集群上,运行无服务器的平台,看上去会不会有点矛盾? 所有这些开源项目仍处于早期阶段。目前还没有特别明显的区分出哪个解决方案最受欢迎。 对这些开源平台的运行时(runtime)支持,包含广泛的流行语言以及构建自定义运行时的能力。每个功能通常部署为Docker容器。只要该容器符合接口要求,它就会运行。 对于所有这些无服务器平台,可观察性至关重要,因为它们在已经非常复杂的平台Kubernetes之上增加了另一层复杂性。无服务器平台和Kubernetes的顺利运行对托管功能的顺利运行至关重要。其中一些项目已经考虑了可观察性,并提供了Prometheus度量端点。Fn还包括Zipkin和Jaeger的Open Tracing实现。 云提供商的无服务器架构 AWS Lambda,Google Cloud Functions,微软Azure Function Apps,最近IBM已经通过托管版本的OpenWhisk进入了这个领域。其中AWS Lambda时间最长,是最成熟的产品;它已经在运行亚马逊Alexa服务的重要部分。 所有这些托管产品都提供了与云中托管的功能相同的基本功能,在不使用它们时不需要任何费用,并且在执行时按微秒计费。所有平台都提供一个Web用户界面和CLI工具来管理这些功能。可以将触发功能引入云平台的其他服务,AWS拥有目前最丰富的可用服务。 所有平台都提供基本的监控和日志汇总功能。AWS Lambda是利用X-Ray提供可观察性的领导者,它提供跨各种AWS服务的端到端跟踪。Google的Stackdriver追踪功能目前仅可用作预览版本,并且尚不支持自动追踪无服务器功能。微软Azure和IBM OpenWhisk不提供任何跟踪功能。 运行异构服务 有了如此多的无服务器平台可供选择,问题是哪一个最适合你的需求?好消息是你不必做出选择。无服务器项目提供了用于管理功能的通用工具和用于将事件映射到功能的事件网关。 管理工具 使用一个定义文件和一个命令行工具,可以将无服务器功能部署到这些提供程序支持的任何语言运行时的许多提供程序中。这种自动化水平使得从一个供应商到另一个供应商的功能不那么痛苦。但是,函数并不是真正的可移植的,因为目前没有任何函数入口点标准,返回数据或者在运行时可用的库。 事件网关 虽然每个云提供商都有自己的API网关,但它们通常不会为多种提供商解决方案提供多少便利。无服务器事件网关提供了供应商不可知的解决方案,既可以作为服务提供,也可以作为Docker镜像在你想要的位置运行。由于此API网关与任何供应商无关,因此可以接收来自任何提供商或外部来源的事件,并路由到任何其他提供商或外部目的地。 图:无服务器网关流程。 利用第三方网关可以用最少的配置交换无服务器端点。 例如,客户端通过HTTP调用事件网关,事件最初路由到AWS Lambda并进行处理。通过简单的配置更改,可以将相同的客户端呼叫路由到Google Cloud Functions进行处理;客户端不需要重新配置。 无服务器监控 观察无服务器框架及其运行功能的性能对于生产环境至关重要。商业产品的领先者是亚马逊与CloudWatch和X-Ray。对于开源,领导者是Fn,因为它已经包括Prometheus指标和Jaeger/Zipkin跟踪。 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |