微服务系列详解:使用Spring Boot和Spring Cloud—Part1:概述

25 篇文章 0 订阅

在本系列中,我们将利用Spring Boot和Spring Cloud着手你的微服务之旅。这是对所需各种概念的介绍。抽丝剥茧 细说架构那些事——【优锐课】

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

在本文中,我们将学习以下内容:
• 整体架构
• 什么是微服务?
• 微服务的优势
• 微服务的挑战
• 为什么Spring Boot和Spring Cloud是微服务的理想选择
• 介绍应用程序

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

整体架构存在一些问题,例如
• 随着时间的推移,大型代码库变得一团糟。
• 在单个代码库上工作的多个团队变得乏味。
• 不可能仅按比例放大应用程序的某些部分。
• 技术更新/重写成为复杂而昂贵的任务。

但是,我认为,与微服务相比,部署和监视整体组件相对容易。

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

微服务的优势

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

微服务的挑战

• 一开始很难获得正确的子域边界。
• 你需要更熟练的开发人员来处理分布式应用程序的复杂性。
• 在没有正确的DevOps文化的情况下管理基于微服务的应用程序几乎是不可能的。
• 尽管通过使用Docker / Kubernetes可以在某种程度上缓解这种情况,但是本地开发人员环境的设置对于测试跨服务通信可能会变得很复杂。

Spring Boot是用于构建MicroServices的最受欢迎和广泛使用的Java框架。如今,许多组织更喜欢在云环境中部署其应用程序,而不是自己维护数据中心。但是,我们需要充分注意各个方面,以使我们的应用程序成为Cloud Native。

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

以下只是一些可用于解决分布式应用程序问题的Spring Cloud模块:
• Spring Cloud Config Server: 用于外部化中央配置服务器中应用程序的配置,无需更新应用程序即可更新配置值。我们可以使用带有git,Consul或ZooKeeper的Spring Cloud Config Server作为配置存储库。
• 服务注册和发现: 由于可能有许多服务,并且我们需要能够动态扩展或缩小,因此我们需要服务注册和发现机制,以便服务到服务的通信不依赖于硬编码的主机名和端口数字。Spring Cloud只需最少的配置即可提供基于Netflix Eureka的Service Registry and Discovery支持。我们还可以使用Consul或ZooKeeper进行服务注册和发现
• 断路器: 在基于微服务的体系结构中,一个服务可能依赖于另一服务,并且如果一个服务发生故障,那么故障也可能级联到其他服务。Spring Cloud提供了基于Netflix Hystrix的断路器来处理此类问题。
• Spring Cloud数据流: 我们可能需要使用Kafka或Spark处理大量数据流。Spring Cloud Data Streams提供了更高级别的抽象,可以更轻松地使用这些框架。
• Spring Cloud Security: 某些微服务仅需要经过身份验证的用户才能访问,并且最有可能的是,我们希望使用单点登录功能在服务之间传播身份验证上下文。Spring Cloud Security使用OAuth2提供身份验证服务。
• 分布式跟踪: 微服务的痛苦之一是调试问题的能力。一个简单的最终用户操作可能会触发一系列微服务调用。应该有一种机制来跟踪相关的调用链。我们可以结合使用Spring Cloud Sleuth和Zipkin来跟踪跨服务调用。
• Spring Cloud Contract: 各个团队很有可能会在不同的微服务上工作。团队应该有一种机制来约定API终结点合同,以便每个团队可以独立开发其API。Spring Cloud Contract帮助服务提供商和消费者创建此类合同并对其进行验证。

这些只是Spring Cloud的一些功能。.

我坚信通过示例进行学习,因此让我们学习如何通过示例应用程序使用Spring Boot和Spring Cloud构建微服务。我将故意使应用程序业务逻辑非常简单,以便我们专注于理解Spring Boot和Spring Cloud功能。

我们将构建一个简单的购物车应用程序,并假设我们将从以下微服务开始:
• 目录服务: 它提供REST API,以提供产品等目录信息。
• 库存服务: 它提供了REST API来管理产品库存。
• cart-service: 它提供了一个REST API来保存客户购物车的详细信息。
• 订单服务: 它提供REST API来管理订单。
• 客户服务: 它提供了REST API来管理客户信息。
• shoppingcart-ui: 这是一个面向客户的前端Web应用程序。

通过各种微服务概念,我们将构建各种服务和REST端点。

请继续关注下一篇文章,我们将在该文章中创建目录服务,并使用spring-cloud-config服务器为所有微服务进行集中配置。

感谢阅读!
另外还有一些资源分享给各位,需要的可以免费领取~
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值