微服务的构建环境比较--Spring Cloud和Kubernetes

发布时间:2022-08-29 20:30

微服务的构建环境比较--Spring Cloud和Kubernetes_第1张图片

背景

Spring Cloud 和 Kubernetes 都声称是开发和运行微服务的最佳环境,但它们本质上有很大不同,并且解决的问题也不尽相同。在本文中,我们将了解两个平台如何帮助搭建基于微服务的架构 (Microservice based architectures, MSA),它们各自擅长的领域,以及如何各取所长以便在微服务之旅中取得成功。

微服务的构建环境比较--Spring Cloud和Kubernetes_第2张图片

 

该图涵盖了系统运行时所涉及的很多方面,但没有涉及在 MSA 世界中非常重要的打包、持续集成、扩展、高可用性、自我修复。我们假定大多数 Java 开发人员都熟悉 Spring Cloud,在本文中,我们将通过分析这些额外的问题来对比看一看, Kubernetes 与 Spring Cloud 有什么区别和关联。

微服务的关注点

与其逐个功能进行比较,不如让我们站在更高的角度来看看,作为微服务应该关注的点, Spring Cloud 和 Kubernetes 又是如何解决这些问题的。 MSA 这种架构风格的优点和所做的取舍,今天已经被大家所熟知。微服务支持强大的模块边界、独立部署和技术多样性(Strong Module Boundaries, Independent Deployment, Technology Diversity),但代价就是需要开发分布式系统(Distribution)、保证最终一致性( Eventual Consistency)以及大量的运维开销(Operational Complexity)。因此,尽可能使用现成的工具是成功的关键因素之一,这些工具可以帮助你尽可能地解决 MSA 问题。采用MSA快速轻松的启动开发很重要,但从项目启动到最终发布的过程是漫长的,你需要做到以下几点才能真正利用好微服务。

  • 基本监控、仪表、健康检查
  • 分布式日志记录、跟踪
  • 针对每个服务,隔离的不只是代码,而是整个构建+测试+打包+推广
  • 可以为每个服务明确定义上游/下游/编译时/运行时的依赖关系
  • 知道如何构建、发布和维护良好的 API 和契约
  • 尊重向后和向前兼容性,就算你即是服务的提供者又是消费者
  • 良好的单元测试技能和准备好做更多的工作(随着微服务的增加,一切都变得更加困难,因此需要更多的单元/契约/api 测试驱动,以及更少的 e2e 驱动)
  • 了解 微服务 vs 模块 vs 库、分布式单体应用、协调发布、数据库驱动集成等
  • 了解基础设施自动化(这里需要了解更多)
  • 有可用的 CI/CD 基础设施
  • 已经或准备投资开发工具、共享库、内部Artifact注册表等
  • 拥有工程方法和流程工具来分解功能需求,并在多个服务中实现/跟踪/发布(xp、pivotal、scrum 等)

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号