Spring Boot 单体应用一键升级成 Spring Cloud Alibaba
2023-05-07 15:18:42 阿里开发者

1000万云上开发者,全栈云产品0元试用:点击 免费试用 ,即刻开启云上实践之旅!

作者:十眠


(相关资料图)

背景

随着 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]%

剩余60%,完整内容请点击下方链接查看:

https://developer.aliyun.com/article/1205641?utm_content=g_1000371302

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

猜你喜欢