标签:调用 服务 springcloud 基础 nacos 熔断器 id cloud
1.Eureka(2.0停止维护了) 用nacos替换了
nacos加feign的使用:
1.下载安装文件zip文件,找到启动文件,
2.访问nacos localhost:8848/nacos 用户密码:nacos,nacos
代码实现
1.在edu服务中,注册nacos
2.引入依赖
<!--服务注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.配置nacos的地址(ip)
#spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
4.在启动类加上@EnableDiscoveryClient //nacos注册
nacos控制监控中nacos localhost:8848/nacos 用户密码:nacos,nacos查看
前提条件,互相调用的服务在nacos中进行注册,下载依赖
1.<!--服务调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.在调用端edu写实现代码,在调用的服务启动类上@EnableFeignClients //微服务 服务调用 的注解
3.在调用端 创建interface 使用注解指定调用服务名称,定义调用方法的方法路径
@FeignClient(name = "service-vod",fallback = VodFileDegradeFeignClient.class) //调用的服务名称
@Component
public interface VodClient {
//定义调用的方法路径
//根据视频id删除阿里云视频
//@PathVariable注解一定要指定参数名称,否则出错
@DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
//PathVariable必须要指定值,不然报错
public R removeAlyVideo(@PathVariable("id") String id);
//定义调用删除多个视频的方法
//删除多个阿里云视频的方法
//参数多个视频id List videoIdList
@DeleteMapping("/eduvod/video/delete-batch")
public R deleteBatch(@RequestParam("videoIdList") List<String> videoIdList);
}
springcloud调用接口的过程
(接口化请求调用)获取服务者名称,使用接口定义方法,获取请求地址
1.feign 服务发现(@FeignClient根据服务的名称地址做接口的调用)
2.hystrkx 熔断器 如果服务端宕机了,就会执行熔断机制,断开连接,如果能调到就继续调用
3.Ribbon 负载均衡 访问数据量大,同时访问一个服务,服务器的压力会比较大,那就会多使用几个服务器,操作相同的业务,
4. http client 最终调用,找到你的服务端名称和地址,做一个调用
hystrkx 熔断器 供分布式的使用,提供了延迟和容错功能
1.服务器宕机,熔断器 会启动熔断机制,服务端无法继续被调用
2.服务器卡机,服务器一定时间内没有响应数据,就会触发延迟处理
代码实现
1.添加依赖
<!--hystrix依赖,主要是用 @HystrixCommand -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
2.在调用端开启熔断器
##开启熔断器
#feign.hystrix.enabled=true
##默认是1000毫秒
##hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=6000
3.创建熔断器的实现类(实现调用服务的方法,方法出错了会执行,正常就正常执行)
@Component
public class VodFileDegradeFeignClient implements VodClient {
//出错之后会执行
@Override
public R removeAlyVideo(String id) {
return R.error().message("删除视频出错了");
}
@Override
public R deleteBatch(List<String> videoIdList) {
return R.error().message("删除多个视频出错了");
}
}
最后在调用端的@FeignClient中(name = "service-vod",fallback = VodFileDegradeFeignClient.class) 加fallback = VodFileDegradeFeignClient.class
标签:调用,服务,springcloud,基础,nacos,熔断器,id,cloud 来源: https://www.cnblogs.com/jerrybu/p/14515459.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。