作者:十眠
背景
跟着 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 之后,咱们来逐渐演示怎么经过服务管理进行服务注册。
经过服务管理完结服务注册
- 进入到对应的 MSE Nacos 实例页面,挑选创建服务
-
咱们填写好服务名、分组名之后,能够挑选一个服务管理的使用进行注册
-
开启了健康检查才能后,咱们还能够挑选健康检查的协议
- 点击确认后,咱们就完结了经过服务管理方法注册使用与实例至 MSE Nacos 中
- 依据下图装备,咱们别离将 A 使用注册成 sc-A、B 使用注册成 sc-b、C 使用注册成 sc-c
-
一起咱们修正 Zuul 使用的 Nacos 地址装备,使其经过 SDK 方法注册至 MSE Nacos 中
-
咱们经过服务管理方法注册的服务,咱们还能够经过服务管理方法将对应的节点从 MSE Nacos 中下线
- 点击 MSE 服务管理中节点详情页面的服务下线,在不用重启使用 pod 的条件下,完结服务从注册中心中下线
到目前为止,咱们完结了经过服务管理完结服务注册。
经过服务管理完结服务订阅
- 咱们在需求订阅 Nacos 服务的使用中添加如下 Env
- 怎么订阅对应的服务?
咱们 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 即可。
- 验证
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引擎的整合,能够进一步简化与降低研发在云上需求关注的部分,使用的客户端能够再轻量化,进一步提高研发功率。
点击此处进入微服务引擎 MSE 官网查看