关于spring-boot-编程思想:Spring-Boot-单体应用一键升级成-Spring-Cloud-Alibaba

27次阅读

共计 2173 个字符,预计需要花费 6 分钟才能阅读完成。

背景

随着 Apache Dubbo、Nacos 以及 Spring Cloud 等服务框架的风行,越来越多的企业开始采纳微服务架构来构建其应用程序。微服务架构使企业可能将其应用程序拆分成多个小型服务,这些服务能够独立部署和扩大。这种架构模式也使企业更容易实现麻利开发和继续交付,从而进步了其业务效率和响应能力。

微服务四大件:注册核心、服务提供者、服务消费者、服务治理

现在,随着服务提供者、服务消费者、服务注册核心以及服务治理等微服务几大件的呈现和成熟,使得咱们应用微服务开发,不仅能够做到疾速开发,更可能谋求微服务的高效和稳固。

单体 or 微服务?

从上图咱们能够看到,随着业务规模的增大,抉择单体架构与微服务架构的抉择趋势,他们之间存在一个交点。在交点之后,抉择微服务架构,业务规模越大越能够享受到微服务架构带来的效率的晋升。咱们能够察看到,这个交点在继续地向左挪动。数字化过程的疾速倒退广泛让企业的 IT 零碎更简单,开源以及云计算推动的技术标准化,正在大幅度地升高微服务架构的技术门槛,在云上小公司也能够很好地玩转微服务。随着这个趋势的到来,还在应用单体架构的企业也逐步思考向微服务转型。咱们发现在云上大部分 Java 利用依然是基于 SpringBoot 的,Spring Boot 利用因为其架构实现的简略性,客户端只需通过 http 和域名就能实现服务调用。因而,许多中小型公司依然采纳该形式进行利用开发。从技术角度上看,咱们如何降级 SpringBoot 利用至微服务架构,享受到微服务治理带来的技术红利,咱们须要减少 SpringCloud 的 maven 依赖?须要业务进行代码革新?本文能够答复你,不须要一行代码改变。

本计划能够通过 MSE 无侵入实现 Java 利用的注册、发现与治理能力。

  • 以后 MSE 提供的注册核心产品能力次要集中在非长久化服务发现,即服务的状态保护在 client,须要业务方依赖 SDK 被动注册服务,并维持心跳;本计划提供了一种的长久化服务发现能力。
  • 解决跨平台服务发现问题,如跨 K8s 服务发现、非 K8s 服务和 K8s 服务相互发现等。
  • 无侵入实现基于 Spring Boot 利用的服务治理能力,如全链路灰度、限流降级、平安可信等。

计划实际与摸索

为了验证该场景,咱们提供了一个略微比较复杂的 Demo,通过该 Demo 来别离演示如何通过 MSE 无侵入实现 Spring Boot 利用的服务注册与服务治理。Demo 是依据 K8s Service 进行服务发现并且通过简略的 HttpClient 进行申请调用,具体申请如下:

➜  ~ curl http://47.97.117.48/A/spring_boot                                   
A[10.0.3.238] -> B[10.0.3.227] -> C[10.0.3.230]%

架构如下所示:

介绍完 Demo 之后,咱们来逐渐演示如何通过服务治理进行服务注册。

通过服务治理实现服务注册

  1. 进入到对应的 MSE Nacos 实例页面,抉择创立服务
  1. 咱们填写好服务名、分组名之后,能够抉择一个服务治理的利用进行注册
  2. 开启了健康检查能力后,咱们还能够抉择健康检查的协定
  1. 点击确定后,咱们就实现了通过服务治理形式注册利用与实例至 MSE Nacos 中
  1. 依据下图配置,咱们别离将 A 利用注册成 sc-A、B 利用注册成 sc-b、C 利用注册成 sc-c
  1. 同时咱们批改 Zuul 利用的 Nacos 地址配置,使其通过 SDK 形式注册至 MSE Nacos 中
  2. 咱们通过服务治理形式注册的服务,咱们还能够通过服务治理形式将对应的节点从 MSE Nacos 中下线

8. 点击 MSE 服务治理中节点详情页面的服务下线,在不必重启利用 pod 的条件下,实现服务从注册核心中下线

到目前为止,咱们实现了通过服务治理实现服务注册。

通过服务治理实现服务订阅

  1. 咱们在须要订阅 Nacos 服务的利用中减少如下 Env
  1. 如何订阅对应的服务?

咱们 Http 申请域名间接调用对应的服务即可,比方:

restTemplate.getForObject("http://sc-b:20002/spring_boot", String.class);

其中 sc-b 为服务名,默认的分组名能够通过 mse_nacos_group 指定,如果须要指定分组名能够调用 http://sc-b:20002/spring_boot?mse_nacos_group=xxx 即可。

  1. 验证

a. 通过 MSE Nacos 控制台能够验证,明确订阅关系

b. 通过端到端申请验证

➜  ~ curl http://47.97.117.48/A/spring_bootA[10.0.3.238] -> B[10.0.3.229] -> C[10.0.3.241]%

无侵入实现基于 SpringBoot 利用的全链路灰度

到目前为止,咱们默认就具备了合乎如上场景的全链路灰度能力。

➜  ~ curl http://47.97.117.48/A/spring_boot -H "x-mse-tag: gray"               
Agray[10.0.3.240] -> B[10.0.3.229] -> Cgray[10.0.3.241]%

总结

应用 Spring Boot 利用一样能够疾速享受到全链路灰度能力带来的公布体验。咱们通过 MSE 服务治理能力与 Nacos 引擎的整合,能够进一步简化与升高研发在云上须要关注的局部,利用的客户端能够再轻量化,进一步晋升研发效率。

作者:十眠

原文链接

本文为阿里云原创内容,未经容许不得转载。

正文完
 0