使用Spring Boot和Spring Cloud的MicroServices – 第1部分:概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cpongo3/article/details/89327697

如今,MicroServices是软件开发的热门话题,许多组织更喜欢使用MicroServices架构构建企业应用程序。在Java社区中,SpringBoot是用于构建整体和微服务的最广泛使用的框架。我打算写一系列文章,介绍如何使用SpringBootSpringCloud构建微服务。

在本文中,我们将学习以下内容:

  • 石柱
  • 什么是MicroServices?
  • MicroServices的优点
  • MicroServices面临的挑战
  • 为什么SpringBoot和SpringCloud是MicroServices的不错选择?
  • 介绍该应用程序

概述

传统上,我们正在以模块化方式构建大型企业应用程序(?? !! ??),但最终将它们作为单个部署单元(EAR或WAR)一起部署。这些被称为单片应用程序。

单片架构存在一些问题,例如:

  • 大型代码库随着时间的推移变得一团糟
  • 致力于单一代码库的多个团队变得乏味
  • 仅扩展应用程序的某些部分是不可能的
  • 技术更新/重写成为复杂而昂贵的任务

但是,恕我直言,与MicroServices相比,部署和监控Monolith相对容易。

微服务

MicroService是围绕特定业务功能构建的服务,可以独立部署。因此,为了构建大型企业应用程序,我们可以识别主要业务域的子域,并使用域驱动设计(DDD)技术将每个子域构建为MicroService。但最终,我们需要让所有这些微服务协同工作,为最终用户提供服务,就好像它是一个单独的应用程序一样。

您可以在这个着名的Martin Fowler博客  上阅读有关MicroServices的更多信息https://martinfowler.com/articles/microservices.html

MicroServices的优点

  • 理解较小的代码库很容易
  • 可以独立扩展高度使用的服务
  • 每个团队都可以专注于一个(或几个)MicroService(s)
  • 技术更新/重写变得更加简单

MicroServices面临的挑战

  • 一开始,获得正确的子域边界很难
  • 需要更多技术熟练的开发人员来处理分布式应用程
  • 没有适当的DevOps文化管理基于MicroServices的应用程序几乎是不可能的
  • 本地开发人员环境设置可能会变得复杂,无法测试跨服务通信。虽然使用Docker / Kubernetes,但在某种程度上可以减轻这种影响。

为什么SpringBoot和SpringCloud是MicroServices的不错选择?

Spring Boot是最流行和广泛使用的Java框架,用于构建MicroServices。如今,许多组织更愿意在云环境中部署他们的应用程序,而不是自己担心维护数据中心。但是我们需要好好照顾各个方面来使我们的应用程序成为Cloud Native。Spring Cloud的魅力在于它。

Spring Cloud本质上是构建Cloud Native应用程序时要遵循的各种设计模式的实现。我们可以简单地利用各种Spring Cloud模块,专注于我们的主要业务问题而不是担心基础设施问题,而不是重新发明轮子。

以下是一些可用于解决分布式应用程序问题的Spring Cloud模块:

Spring Cloud Config Server:外部化中央配置服务器中的应用程序配置,能够更新配置值,而无需重新启动应用程序。我们可以将Spring Cloud Config Server与gitConsulZooKeeper一起用作配置存储库。

Service Registry and Discovery:由于可能有许多服务,我们需要能够动态扩展或缩小,我们需要Service Registry和Discovery机制,以便服务到服务通信不应该依赖于硬编码的主机名和端口号。Spring Cloud 只需最少的配置即可提供基于Netflix Eureka的Service Registry和Discovery支持。我们还可以使用ConsulZooKeeper进行Service Registry和Discovery。

断路器:在基于微服务的体系结构中,一种服务可能依赖于另一种服务,如果一种服务出现故障,则故障也可能级联到其他服务。Spring Cloud提供基于Netflix Hystrix的Circuit Breaker来处理这些问题。

Spring Cloud Data Streams:现在我们可能需要使用KafkaSpark等处理大量数据流.Spring Cloud Data Streams提供更高级别的抽象,以便以更简单的方式使用这些框架。

Spring Cloud Security:只有经过身份验证的用户才能访问某些微服务,而且我们很可能需要单点登录功能来跨服务传播身份验证上下文。Spring Cloud Security使用OAuth2提供身份验证服务。

分布式跟踪:微服务的痛点之一是调试问题的能力。一个简单的最终用户操作可能会触发一系列微服务调用,应该有一种跟踪相关调用链的机制。我们可以使用带有Zipkin的Spring Cloud Sleuth来跟踪跨服务调用。

Spring Cloud契约:不同的团队很有可能在不同的微服务上工作。应该有一种机制让团队就API端点合同达成一致,这样每个团队都可以独立开发他们的API。Spring Cloud Contract有助于创建此类合同并由服务提供商和消费者进行验证。

这些只是Spring Cloud的一些功能。要了解更多信息,请访问https://projects.spring.io/spring-cloud/

您可能还想了解  为什么SpringBoot如此受欢迎以及如何有效地学习SpringBoot?

Categories: MicroServices

发表评论 取消回复

placeholder.jpg

电子邮件地址不会被公开。

Name
Email
Website
What's on your mind?

猜你喜欢

转载自blog.csdn.net/cpongo3/article/details/89327697