Spring Boot 单体应用一键升级成 Spring Cloud Alibaba
配景随着 Apache Dubbo、Nacos 以及 Spring Cloud 等服务框架的盛行,越来越多的企业开始接纳微服务架构来构建其应用程序。微服务架构使企业能够将其应用程序拆分成多个小型服务,这些服务可以独立部署和扩展。这种架构模式也使企业更容易实现敏捷开发和持续交付,从而进步了其业务服从和响应本领。
https://img-blog.csdnimg.cn/img_convert/bc957a3fcc32bec45226eca01a85e84d.png
微服务四大件:注册中心、服务提供者、服务消耗者、服务治理
如今,随着服务提供者、服务消耗者、服务注册中心以及服务治理等微服务几大件的出现和成熟,使得我们使用微服务开发,不仅可以做到快速开发,更能够追求微服务的高效和稳固。
https://img-blog.csdnimg.cn/img_convert/8c5bbb6c8b79fb1053297db2537cbfac.png
单体 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 -> B -> C% 架构如下所示:
https://img-blog.csdnimg.cn/img_convert/09ae47c9722210bdaacfada1a9849d30.png
介绍完 Demo 之后,我们来逐步演示怎样通过服务治理举行服务注册。
通过服务治理完成服务注册
1. 进入到对应的 MSE Nacos 实例页面,选择创建服务
https://img-blog.csdnimg.cn/img_convert/9da913938259470b8fee7a14a1ea27aa.png
2. 我们填写好服务名、分组名之后,可以选择一个服务治理的应用举行注册
3. 开启了健康检查本领后,我们还可以选择健康检查的协议
https://img-blog.csdnimg.cn/img_convert/c5e596dd69d5f4a62401f0a46bb911f1.png
4. 点击确定后,我们就实现了通过服务治理方式注册应用与实例至 MSE Nacos 中
https://img-blog.csdnimg.cn/img_convert/038e04884cf1c83fc8719e557a1e8722.png
5. 根据下图设置,我们分别将 A 应用注册成 sc-A、B 应用注册成 sc-b、C 应用注册成 sc-c
https://img-blog.csdnimg.cn/img_convert/910cf28e08bdcde0cc0faee7afc43277.png
6. 同时我们修改 Zuul 应用的 Nacos 地址设置,使其通过 SDK 方式注册至 MSE Nacos 中
7. 我们通过服务治理方式注册的服务,我们还可以通过服务治理方式将对应的节点从 MSE Nacos 中下线
https://img-blog.csdnimg.cn/img_convert/21499649f63fbfa334d4c61199b19b3f.png
https://img-blog.csdnimg.cn/img_convert/12272584cf2dbc8fb12f44b48ee3e96b.png
8.点击 MSE 服务治理中节点详情页面的服务下线,在不消重启应用 pod 的条件下,实现服务从注册中心中下线
https://img-blog.csdnimg.cn/img_convert/4336057051721ef66f913e7ceedb68b3.png
到目前为止,我们完成了通过服务治理实现服务注册。
通过服务治理完成服务订阅
1. 我们在需要订阅 Nacos 服务的应用中增加如下 Env
https://img-blog.csdnimg.cn/img_convert/6f8926602683fb647493483645e82c5c.png
2. 怎样订阅对应的服务?
我们 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 即可。
3. 验证
a.通过 MSE Nacos 控制台可以验证,明白订阅关系
https://img-blog.csdnimg.cn/img_convert/68f05975035288738666afc13efe5c2e.png
b.通过端到端请求验证
➜~ curl http://47.97.117.48/A/spring_bootA -> B -> C% 无侵入实现基于 SpringBoot 应用的全链路灰度
https://img-blog.csdnimg.cn/img_convert/3c6a8bdf4a775c46b3e18767eb4ec329.png
到目前为止,我们默认就具备了符合如上场景的全链路灰度本领。
➜~ curl http://47.97.117.48/A/spring_boot -H "x-mse-tag: gray"
Agray -> B -> Cgray% 总结
使用 Spring Boot 应用一样可以快速享受到全链路灰度本领带来的发布体验。我们通过MSE 服务治理本领与Nacos引擎的整合,可以进一步简化与降低研发在云上需要关注的部分,应用的客户端可以再轻量化,进一步提升研发服从。
https://img-blog.csdnimg.cn/img_convert/5742b6efe86a3ae1fbcccf39a7e3f951.png
作者:十眠
原文链接
本文为阿里云原创内容,未经允许不得转载。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]