最全的ppt模板网站,办公空间设计定位,wordpress 网店,服务器 网站 appSpring Cloud 是在 Spring Boot 之上构建的一套微服务生态体系#xff0c;包括服务发现、配置中心、限流降级、分布式事务、异步消息等#xff0c;因此通过增加依赖、注解等简单的四步即可完成 Spring Boot 应用到 Spring Cloud 升级。
Spring Boot 应用升级为 Spring Cloud…Spring Cloud 是在 Spring Boot 之上构建的一套微服务生态体系包括服务发现、配置中心、限流降级、分布式事务、异步消息等因此通过增加依赖、注解等简单的四步即可完成 Spring Boot 应用到 Spring Cloud 升级。
Spring Boot 应用升级为 Spring Cloud
Cloud Native
以下是应用升级 Spring Cloud 的完整步骤。 第一步添加 Spring Cloud 依赖
首先为应用添加 Spring Cloud 与 Spring Cloud Alibaba 依赖。注意根据当前应用 Spring Boot 版本选择合适的 Spring Cloud 版本具体参见版本映射表[1]。
properties spring-cloud-alibaba.version2022.0.0.0/spring-cloud-alibaba.version spring-cloud.version2022.0.0/spring-cloud.version/propertiesdependencyManagement dependencies dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version${spring-cloud.version}/version typepom/type scopeimport/scope /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${spring-cloud-alibaba.version}/version typepom/type scopeimport/scope /dependency /dependencies/dependencyManagementdependencies !-- Nacos 服务发现 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency !-- 服务发现OpenFeign服务调用 -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-openfeign/artifactId /dependency !-- 服务发现OpenFeign服务调用 -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-loadbalancer/artifactId /dependency/dependencies
以上我们添加了服务注册发现、OpenFeign 等依赖。 第二步添加配置
在应用 application.yml 或者 application.properties 文件中增加以下配置项设置应用名、注册中心地址。
application.yml
spring: application: #项目名称必填在注册中心唯一 #最好和之前域名规范、kubernetes service名等保持一致会作为调用与负载均衡依据 name: service-provider cloud: nacos: discovery: #启用 spring cloud nacos discovery server-addr: 127.0.0.1:8848
application.properties
#项目名称必填在注册中心唯一#最好和之前域名规范、kubernetes service名等保持一致会作为调用与负载均衡依据spring.application.nameservice-provider #启用 spring cloud nacos discoveryspring.cloud.nacos.discovery.server-addr127.0.0.1:8848 第三步启动类增加注解
启动类增加 EnableDiscoveryClient EnableFeignClients 注解启动服务地址自动注册与发现。
SpringBootApplicationEnableDiscoveryClientEnableFeignClientspublic class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); }} 第四步调整服务调用方式 注意
1. 为了保证平滑升级请确保下游应用完成 Spring Cloud 改造并在注册中心注册服务后再进行调用方式改造。
2. RestTemplate/FeignClient 默认发起调用的 hostname (示例中的 service-provider)是对端 Spring Cloud 应用名。因此为了保证尽可能少的改造量改造过程中设置的应用名 spring.nameservice-provider 最好和之前的命名规范保持一致。比如 如果之前有自定义域名则和域名定义保持一致 如果之前用的 Kubernetes Service则和 Service Name 保持一致
1. RestTemplate 模式
为之前的 RestTemplate Bean 添加 LoadBlanced 注解使得 RestTemplate 接入服务发现与负载均衡
BeanLoadBalancedpublic RestTemplate restTemplate() { return new RestTemplate();}
其它原有 RestTemplate 发起调用的代码保持不变只需调整 hostname 即可如下所示。
RestController public class TestController {Autowired private RestTemplate restTemplate;GetMapping(value /echo-rest/{str}) public String rest(PathVariable String str) { return restTemplate.getForObject(http://service-provider/echo/ str, String.class); }}
2. FeignClient 模式
使用 FeignClient 注解将 EchoService 这个接口包装成一个 FeignClient属性 name 对应对端应用名 spring.nameservice-provider。
//FeignClient(name service-provider, urlhttp://service.example.com/) FeignClient(name service-provider)public interface EchoService { GetMapping(value /echo/{str}) String echo(PathVariable(str) String str);}
将 EchoService 作为标准 bean 注入即可对远端服务发起请求了。
RestController public class TestController {Autowired private EchoService echoService;GetMapping(value /echo-feign/{str}) public String feign(PathVariable String str) { return echoService.echo(str); }}
3. HtClient、自定义 HTTP 访问工具等
对于使用 HttpClient 或者自行封装 http 调用工具的用户建议统一改造为以上 1、2 两种调用模式之一。