首页 > 编程语言 > 详细

springcloud基础

时间:2021-03-11 10:27:27      阅读:24      评论:0      收藏:0      [点我收藏+]

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基础

原文:https://www.cnblogs.com/jerrybu/p/14515459.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!