微服务与Kubernetes:软件生态系统园艺指南

NGINX | 2023年3月30日

软件开发如同园艺,需要了解不同要素如何协同作用,构建美观且高效的生态系统。正因如此,我们为今年的微服务三月活动选择了园艺主题。就像任何花园一样,一个棘手的问题总会像杂草般反复出现在讨论中:微服务与Kubernetes有何区别?

横幅,标题为本节标题:“微服务:花园中的植物”

植物是花园生态系统的主要组成部分。这些生物构成了花园,为花园增添美感并发挥相应功能。同样,微服务是现代软件应用的主要构建模块。它们是各自执行特定功能的独立服务,通过协同工作构建规模更大、结构更复杂的应用。

与植物一样,微服务的规模、形态和用途各不相同。有些微服务规模较小且功能专一,只负责一项操作;另一些规模较大、功能更通用,或由多个较小的组件组成。例如,草莓植株较小,只结草莓。这就像只处理信用卡交易的微服务(规模较小且功能专一)。香菜则用途更广,不仅能产出用于制作莎莎酱和鳄梨酱的叶片,还能结出芫荽籽。这类植物就像处理用户身份验证的服务(规模较大且流程更通用)。

横幅,包含本节标题“容器:微服务的花盆”

大多数植物都需要种在土壤中,才能吸收养分和水分;如果让根部裸露,植物就会枯死。直接种在地里当然没有问题,但许多园艺爱好者会选择用花盆进行容器栽培,因为这样可以按需调配土壤,更好地防治病虫害,还能在花园中移动植物,甚至在冬季将其搬到室内。同样,微服务也有多种部署方式,其中最常见的方式恰如其名,就是部署在“容器”中。容器化微服务包含运行应用所需的一切,并且可以轻松地在不同运行时环境之间迁移。

横幅,标题为本节标题“Kubernetes:园艺工具”

现在,我们已经把微服务(植物)放进了容器(花盆),但该如何部署、维护和扩展它们?当然要用工具!这就要用到Kubernetes。Kubernetes提供了许多功能和附加组件,让微服务的管理和维护更加轻松,并被广泛视为容器编排的事实标准工具。例如,Kubernetes提供自动负载均衡、服务发现和自愈功能(可减轻开发人员的部分维护和监控工作)。如果大家都希望微服务(植物)提高产量呢?Kubernetes支持自动扩缩容和滚动更新,帮助微服务应用顺畅运行。

注意:Kubernetes的替代方案,例如Docker Swarm和HashiCorp Nomad,可提供大致相同的功能。

横幅,显示本节标题:“不使用Kubernetes的微服务:‘野生花园’方案”

我们已经说明了使用Kubernetes管理微服务的理由,它有助于防止应用程序肆意增长并失去控制。但Kubernetes和容器并非总是必需。您可以根据应用程序的复杂程度,改用传统的虚拟机(甚至物理机)平台,并通过自动化工具进行部署或预置。这些工具无法提供与Kubernetes同等水平的自动化和可扩展性,但对于复杂程度较低或非关键应用程序,这种取舍或许可以接受。另一种选择是使用无服务器计算平台(例如AWS Lambda),这样无需操心底层基础设施,即可让微服务代码响应事件并运行。

包含本节标题的横幅:Kubernetes 中并非一切都是微服务

经验丰富的园丁都知道,伴生种植(例如,在番茄旁种植万寿菊)可以更充分地利用资源,也有助于打造更健康的花园。同样,Kubernetes提供了丰富的功能和附加组件,不仅适用于微服务管理,还可用于非微服务应用,例如机器学习模型或单体应用。许多客户使用Kubernetes管理微服务和其他应用,有些客户甚至在Kubernetes中部署虚拟机(VM)。对于正在将传统单体应用迁移到面向微服务架构的组织而言,这可能是一个很好的选择。

探究问题根源

希望读完本文后,您能有两点收获(除了想去逛逛当地的苗圃):

  • 并非部署在Kubernetes中的所有内容都是微服务。Kubernetes提供的功能和附加组件使其成为适用于多种生态系统的实用工具。
  • 微服务并非总是需要使用Kubernetes进行管理。有些应用采用其他工具和“野生花园”式方法,反而能更好地发展。

查看以下资源,详细了解微服务的基础知识:


分享

关于作者

相关博客文章

NGINX Plus R26 正式发布
NGINX | 2022/02/15

NGINX Plus R26 正式发布

NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
NGINX | 2022/02/10

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击

gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
NGINX | 2021/09/13

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划

了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。

NGINX Plus R19 正式发布
NGINX | 2019/09/03

NGINX Plus R19 正式发布

NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。

NGINX现已正式加入F5
NGINX | 2019/05/09

NGINX现已正式加入F5

NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

使用NGINX和NGINX Plus实现高性能缓存
NGINX | 2016/08/24

使用NGINX和NGINX Plus实现高性能缓存

我将介绍NGINX在内容缓存和性能方面的工作原理,并分享一些控制NGINX内容缓存方式的技巧。