AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

何时该用无服务器,何时该用 Kubernetes?

  • 2019-01-10
  • 本文字数:1368 字

    阅读完需:约 4 分钟

何时该用无服务器,何时该用Kubernetes?

什么时候该用无服务器,什么时候该用 Kubernetes 构建云原生应用程序?


一个好的无服务器应用场景应该是在夜间没有太多或者完全没有流量。由于无服务器平台仅在代码运行期间收费,因此可以显著降低成本。较大的应用程序不执行任何操作,无服务器便宜的可能性越大。


但是,这并不意味着无服务器就可以降低成本,如果应用程序全天候运行,可能存在一些隐性成本,比如管理 API 造成的额外成本和测试函数的调用成本。

没经验,怎么选?

就听而言,无服务器和 Kubernetes 好像已经非常成熟;但就实践而言,二者还有很多成长空间,研发人员也并未达到人人普及的程度。如果既没有无服务器也没有 Kubernetes 经验,那么,在无服务器平台运行 Hello World 应用程序应该更容易。


因为无服务器只需将精力集中在代码上即可,使用 Kubernetes 则通常需要等待一段时间来创建集群,配置 Kubernetes 以获取公共 IP 地址,然后再部署容器。使用无服务器平台,只需使用云提供商的 Web 工具即可在几分钟内上手。

有经验,怎么看?

这种难易程度也是变化的,无服务器并不总比 Kubernetes 更容易。使用一堆函数构建和管理无服务器应用程序比只有一个容器的简单 Kubernetes 应用程序更难。实际上,将 Kubernetes 用于更复杂的应用程序可能更容易,因为该平台更成熟。


无服务器计算最强大的功能之一是自动可扩展性,开发人员无需采取任何措施就可利用此功能。使用 Kubernetes,研发人员还可使用 pod 甚至节点自动可扩展性,但需要一些配置并且速度稍慢,因为只有在某些规则适用时才会触发此过程。


但是,Kubernetes 可能提供比某些无服务器平台更好的可扩展性,因为 Kubernetes 更加成熟,并且在不同区域之间提供 HA(高可用性),这并非所有无服务器平台都提供。


A/B 测试可能是构建云原生应用程序的关键功能,但无服务器平台并不具备这一点,Kubernetes 则可以。此外,Kubernetes 应用程序的监控功能更加成熟。例如,使用 Istio 可以看到微服务的执行时间,服务调用情况以及是否存在问题。无服务器平台因其自身的最大优势就是不需要操心基础设施,所以研发人员可做的操作也十分有限。


如果应用程序相当简单,只有一个函数提供 API,则无服务器可能是更好的选择,因为部署会更容易,并且各种无服务器平台都可提供对单个函数的监控。

响应延迟对比

使用无服务器平台时,由于需要初始化代码,因此第一次调用函数需要花费一些时间。比如,在 OpenWhisk 中使用 Docker 容器,容器需要时间才能启动 Java 应用程序。如果需要快速可靠的响应时间,则可以使用 Kubernetes。


通过应用缓存,无服务器平台对响应时间做了改善。第一次冷启动后,不必再花费较长响应时间启动第二次,这可能足以满足应用需求。

高性能计算对比

无服务器平台通常具有某些资源限制,比如,功能不能超过 512 MB 的 RAM,不能超过 5 分钟。如果这些限制对应用程序来说过于严格,则需要使用 Kubernetes。有时也会在较小的功能中分解应用程序,比如,将现有单片应用程序移到云中。

结语

无服务器计算和 Kubernetes 对应不同的应用场景,也有着各自的缺点。如果是初学者,建议从无服务器计算开始,毕竟 Kubernetes 的配置过程相对繁琐。如果是企业用户,追求高性能计算、更优性能并希望运行大规模应用程序,Kubernetes 依旧是最佳选择。


参考链接:https://dzone.com/articles/when-to-use-serverless-when-to-use-kubernetes


2019-01-10 13:218773
用户头像
赵钰莹 极客邦科技 总编辑

发布了 897 篇内容, 共 681.6 次阅读, 收获喜欢 2694 次。

关注

评论

发布
暂无评论
发现更多内容

Kong-To-APISIX:减轻你的迁移压力

API7.ai 技术团队

开源 网关 kong APISIX

阿里人,五年心血汇聚而成这份Spring Cloud Alibaba开发手册

Java架构师迁哥

IDEA下载及新建第一个Java项目(Helloworld)

Bob

8月日更

NLP随笔(四)

毛显新

自然语言处理 神经网络 深度学习

【翻译】数据包的旅程 - 主机之间通信

luojiahu

计算机网络 OSI模型

小技巧 | Get 到一个 Web 自动化方案,绝了!

星安果

chrome 自动化 Web 插件 chrome扩展

读书日送书丨关于音视频技术你需要知道的二三事

声网

人工智能

面试官:JVM的运行时数据区了解不?

程序员阿杜

Java JVM JVM、 8月日更

【设计模式】单例模式

Andy阿辉

编程 程序员 后端 设计模式 8月日更

Dremio 推出在 AWS 云上运行的数据湖服务

水滴

数据湖 8月日更 Dremio

藏在煤箱中的文明:一个会说话的箱子能告诉我们什么?

脑极体

数据缓存历险记(二)--被过期键经理上了一课

卢卡多多

redis Redis键过期监听 8月日更

Nacos注册中心之概要设计

捉虫大师

微服务 nacos 服务发现

当一只「无头苍蝇」又何妨?

非著名程序员

读书笔记 提升认知 个人提升 8月日更

Error SHA256 mismatch

一个大红包

8月日更

「SQL数据分析系列」16. 分析函数

Databri_AI

sql 函数 分析

使用 Sequelize 快速构建 PostgreSQL 数据的 CRUD 操作

devpoint

node.js postgresql API 8月日更

Linux之at命令

入门小站

Linux

【前端 · 面试 】HTTP 总结(四)—— HTTP 状态码

编程三昧

面试 大前端 HTTP 8月日更

为了进阿里,我通宵达旦三个月,学了这些技术点(附Java思维导图)

Java 编程 架构 面试 架构师

Vue进阶(五):与 Vuex 的第一次接触

No Silver Bullet

Vue vuex 8月日更

Gin 介绍

xcbeyond

Go 语言 gin 8月日更

前端之数据结构(一)

Augus

数据结构 8月日更

【Vue2.x 源码学习】第二十五篇 - 数组依赖收集的原理

Brave

源码 vue2 8月日更

SpringBoot 整合 Drools

LeifChen

drools springboot 规则引擎 8月日更 业务规则

刷完这套200+大厂Java真题手册,成功拿到阿里,京东,美团的offer

Java 编程 架构 面试 架构师

趁着课余时间学点Python(三)变量,基本数据类型,运算符

ベ布小禅

8月日更

【网络安全】渗透工程师面试题总结大全

网络安全学海

面试 网络安全 信息安全 渗透测试 漏洞

试错,然后成长

escray

学习 极客时间 朱赟的技术管理课 8月日更

Linux 环境如何使用 kill 命令优雅停止 Java 服务

陈皮的JavaLib

Java Linux 面试 springboot 8月日更

等待时间的忍受度

箭上有毒

8月日更

何时该用无服务器,何时该用Kubernetes?_服务革新_赵钰莹_InfoQ精选文章