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

如今,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?

近期文章
  • Maven deploy部署jar到远程私服仓库
  • java动态代理实现与原理
  • git 常用命令
  • java中观察者模式Observable和Observer
  • Netty解决TCP粘包和拆包问题的四种方案
近期评论
  • 马化腾发表在《Nginx的一些基本功能》
  • geyang发表在《世界,您好!》
  • 一位WordPress评论者发表在《世界,您好!》
分类目录
  • Big Data (5)
  • Java (27)
  • MicroServices (13)
    • GateWay (2)
    • REST (2)
  • Plus (38)
  • Spring (9)
    • Spring Boot (5)
    • Spring Data (4)
  • 中间件/框架 (5)
    • Kafka (3)
  • 数据库 (11)
    • Hbase (5)
    • MongoDb (2)
    • Mysql (3)
标签
apiDoc Drools dubbo fiddler Grafana hbase Hystrix IDEA java JDK jpa jvisualvm jvm kafka linux MongoDB MQTT Mysql Netty nginx OpenJDK Prometheus REST RocketMQ RPC Servlet Sleuth SOA spring boot spring data zookeeper Zuul 域名 微服务 数据结构 日志 爬虫 缓存 股票 设计模式 读书 运维 队列 集合 音乐
联系我

你可能感兴趣的:(使用Spring Boot和Spring Cloud的MicroServices – 第1部分:概述)