1,安装Nacos,先根据项目spring boot的版本,去Nacos官网下载对应版本的Nacos,。
Nacos对服务器的配置有要求,服务器配置不够需要升级配置,安装Nacos需要服务器是安装了jdk的,而且要配置jdk的环境变量,如果只是安装了jdk,没有配置环境变量,安装会报错。安装配置了jdk后,启动Nacos,如果启动还是报错,要去改Nacos的配置,指定jdk的安装路径。不然还是会报找不到jdk。安装完后,启动Nacos,输入服务器ip:8848/nacos。看是否能访问,我上一篇遇到的问题都贴出来了CSDN。
2,安装完后,在自己的spring boot项目里面配置注册中心的地址。
spring.application.name=cloud-xxxx-service spring.cloud.nacos.discovery.server-addr=x.x.x.x:8848 spring.cloud.nacos.discovery.namespace=public
pom文件引入。排除ribbon因为用spring-cloud-loadbalancer做轮询。
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2021.0.1.0</version> <exclusions> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </exclusion> </exclusions> </dependency>
在启动类上加@EnableDiscoveryClient注解,开启。
3,A服务,B服务都注册到Nacos了,那要解决A,B服务之间的通信吧,A同事说要用openfegin,好吧,那就引入吧,注意版本,否则启动报错,我的spring boot版本是2.7的。
pom文件加:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>3.1.7</version> </dependency> 启动类加注解开启:@EnableFeignClients properties配置文件设置feign的调用超时。 #连接超时时间设置 feign.client.config.default.connectTimeout=10000 #读取超时时间设置 feign.client.config.default.readTimeout=10000
代码里面使用feign调用,要调用的服务名称,服务接口类。
自己的controller类调用。
4,服务与服务之间的通信解决了,那要考虑服务的熔断吧,不然A服务调B服务,B服务一直不返回,触发了feign超时,A服务对应的接口就直接500了,不处理熔断服务雪崩啊。
#开启服务熔断支持 feign.circuitbreaker.enabled=true
pom引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
启动类上开启注解:@EnableHystrix
熔断回调类如下:
以上就是Spring Boot项目整合Nacos, openfeign,hystrix。
服务熔断时界面返回