SpringCloud心得(一)

SpringCloud主要应用于微服务方向,来缓解服务器的压力,从而带来更方便的用户体验。通过这段时间的学习,我基本上可以熟练应用spring cloud进行一些简单的开发工作,下面就是我这段时间的学习心得:
1.eureka
eureka是微服务的根本,微服务的搭建都是在eureka的基础上的。各项服务将自身注册到eureka上来实现调用者的服务的共享。
其中eureka使用到的注解分为三个基本方面:
1.eureka服务器端
使用@EnableEurekaServer来表明当前的类为eureka服务器,其中的application.yml配置文件需要提供eureka的名称、端口号、是否将自己注册到注册中心(register-with-eureka)、是否自动拉取服务(fetch-register)等基本信息
使用到的maven依赖为

<dependency> 
	<groupId>org.springframework.cloud</groupId>
	 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 
</dependency>

2.eureka服务提供端
使用@EnableDiscoveryClient注解开启客户端发现功能,并在配置文件中将自身端口号、名称以及eureka服务器端配置完成即可,即eureka: client: service-url: defaultZone: eurekServer的服务地址
使用到的maven依赖为:

<dependency> 
	<groupId>org.springframework.cloud</groupId> 
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 
</dependency>

3.eureka服务使用端
使用@EnableDiscoveryClient注解开启客户端发现功能,并在配置文件中将自身端口号、名称以及eureka服务器端配置完成即可,即eureka: client: service-url: defaultZone: eurekServer的服务地址
使用到的maven依赖为:

<dependency> 
	<groupId>org.springframework.cloud</groupId> 
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 
</dependency>

2.ribbon负载均衡
在使用多个相同服务时,为了避免有些服务频繁被访问而其余服务空闲的情况,我们可以使用ribbon来进行服务的负载均衡。
ribbon负载均衡可以在RestTemplate的配置方法上添加@LoadBalance注解。其中RestTemplate配置方法是用来获取服务名称、端口号等信息来实现eureka服务的调用的。而添加@LoadBalance注解就可以不再指定端口号,直接使用服务名称即可完成服务的调用。
ribbon负载均衡算法使用的是简单的轮询算法,即每个端口循环使用,我们也可以在配置文件中更改{服务名称}: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule来进行算法的调节。
3.Hystrix服务降级
服务降级是为了防止服务器在大量访问时,因为某一个小的步骤出现差错导致服务整体无法进行。所以我们需要采取方法来对服务进行降级来确保服务的正常进行,至少给用户看到一个错误的结果。
使用Hystrix开启服务熔断需要使用@EnableCircuitBreaker注解来开启服务降级。其中,spring提供了一个集成三个注解的一个更为简洁的组合注解:@SpringCloudApplication,@SpringCloudApplication包含了@SpringBootApplication、@EnableDiscoveryClient和@EnableCircuitBreaker三个注解。我们在编写服务降级时需要在被降级的方法上添加@HystrixCommand注解,调用其中的fallbackMethod属性来指派降级后的方法。其中降级方法的参数和返回值必须和被降级方法保持一致。
当我们需要在某一个类上添加降级服务时,可以使用@DefaultProperties注解中的defaultFallback属性来指定默认的降级方法,就可以在当前类的方法降级后统一执行该降级方法。
为了规定超时时长,我们可以在配置文件中添加hystrix: command: default: execution: isolation: thread: timeoutInMilliseconds: 时长(单位:ms)来规定服务请求后等待的时长,默认时长为1s。其余的熔断配置如下hystrix: command: default:circuitBreaker: errorThresholdPercentage: 50 # 触发熔断错误比例阈值,默认值50% sleepWindowInMilliseconds: 10000 # 熔断后休眠时长,默认值5秒 requestVolumeThreshold: 10 # 熔断触发最小请求次数,默认值是20
使用到的maven依赖为:

<dependency>
	 <groupId>org.springframework.cloud</groupId>
	  <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> 
</dependency>

4.Feign
Feign可以极大简化我们的代码,并且Feign还集成了负载均衡、服务降级等多种常用功能,方便我们进行开发。
Feign首先是简化了服务的调用:我们需要编写Feign的客户端,其中用到的注解有@FeignClient(“{代理服务的名称}”),并完成接口的编写,接口中需要写出需要代理的方法,以及相应的@GetMapping,之后再完成相关controller的编写即可。在主类中我们需要添加@EnableFeignClient注解用来开启Feign功能。因为Feign集成了Ribbon,所以无需我们进行负载均衡的相关设置。
当然我们也可以在配置文件中使用ribbon: ReadTimeout: 2000 # 读取超时时长 ConnectTimeout: 1000 # 建立链接的超时时长来进行相关配置的修改。
Feign对Hystrix的支持:默认情况下是关闭的,我们需要在配置文件中设置feign: hystrix: enabled: true # 开启Feign的熔断功能来打开Hystrix,开启服务降级。但是在Feign中我们需要编写一个降级类来实现服务降级,而不是某个单独的方法。我们编写的降级类需要使用@Compoent将权限交给spring来管理,降级类需要实现Feign接口。编写完成后需要在Feign接口中的@FeignClient注解中调用fallback属性来指定刚才编写的降级类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值