springCloud框架,包含eureka,service provider,consumer搭建

一、创建服务提供方工程

1.本次以model工程创建服务提供方

springCloud框架,包含eureka,service provider,consumer搭建
1.1 pom.xml
springCloud框架,包含eureka,service provider,consumer搭建
1.2 application.yml文件
springCloud框架,包含eureka,service provider,consumer搭建
1.3 User.java
springCloud框架,包含eureka,service provider,consumer搭建
1.4 Usermapper.java
(通用mapper只写这一个接口即可实现增删改查CRUD所有功能,在xxService.java中直接调用固定方法名)springCloud框架,包含eureka,service provider,consumer搭建 1.5 UserServuceImpl.java springCloud框架,包含eureka,service provider,consumer搭建
1.6 UserController.java
springCloud框架,包含eureka,service provider,consumer搭建
1.7 启动项目,在浏览器客户端能正常访问即可。
springCloud框架,包含eureka,service provider,consumer搭建

2.创建服务消费方

2.1 pom.xml
springCloud框架,包含eureka,service provider,consumer搭建
2.2 application.yaml
springCloud框架,包含eureka,service provider,consumer搭建
2.3 启动类
springCloud框架,包含eureka,service provider,consumer搭建
2.4 User.java
springCloud框架,包含eureka,service provider,consumer搭建
2.5 服务消费方的UserController.java
springCloud框架,包含eureka,service provider,consumer搭建
2.6 测试Ribbon的LoadBalancer轮询获取多个服务方的其中一个地址。修改服务消费方application.yml中的配置(注释掉)
#user-service: #轮询获取服务方一个地址的接口 改为 随机获取服务方其中一个地址
#ribbon:
#NFLoadBalancerRuleClassName: com.netflix.loadBalancer.RandomRule

注意在服务消费方的表现层xxController.java中restTemplate.getForObject(Url url, Class responseType)按F7,第二次回到该方法后再次F7即可进入RibbonLoadBalancerClient中execute(){ getServer()}方法然后打断点查看请求到的服务方地址。

第一次请求eureka中的服务方:
springCloud框架,包含eureka,service provider,consumer搭建
第二次请求服务提供方的服务:
springCloud框架,包含eureka,service provider,consumer搭建
多次请求中会发现每次轮询调用相同服务方的其中一个地址。

放开上述配置内容后多次请求服务方,可以看到偶尔多次调用同一个服务方地址。

2.7 熔断器的注解@HystrixCommand中属性@HystrixProperty
首先找到ConsumerControler.java中import的包com.netflix.hystrix.xxxxx,点击到hystrix看到左侧引入的包中有一个HystrixCommandProperty,java
springCloud框架,包含eureka,service provider,consumer搭建
即找到其key的名字,值的单位是毫秒ms.

熔断器的原理:正常情况下熔断器CircuitBreaker处于closed关闭状态,当20个以上的请求中50%以上的请求结果失败时候,熔断器CircuitBreaker转为open打开状态,5秒钟之后熔断器转为half open半打开状态。在半打开状态时会放出部分请求通过,同样判断20个以上的请求中如果50%以上的请求结果成功,则熔断器再次转为关闭closed状态,否则还是转为opend状态,继续等待5秒钟判断20个以上的请求50%的请求成功率。

3.注册中心Eureka创建

3.1 pom.xml
springCloud框架,包含eureka,service provider,consumer搭建
3.2 application.yml
springCloud框架,包含eureka,service provider,consumer搭建
3.3 启动类
springCloud框架,包含eureka,service provider,consumer搭建

4.eureka的高可用

4.1 点击idea右上角的三角符号中edit configuration(编辑配置)
springCloud框架,包含eureka,service provider,consumer搭建
4.2
springCloud框架,包含eureka,service provider,consumer搭建
springCloud框架,包含eureka,service provider,consumer搭建
4.3 第二次启动eureka前修改配置中端口号和注册地址
springCloud框架,包含eureka,service provider,consumer搭建
4.4 启动注册中心,并查看注册成功的服务
springCloud框架,包含eureka,service provider,consumer搭建

5.熔断器Hystrix

配置在服务消费方项目中。
添加依赖spring-cloud-starter-netflix-hystrix.
服务消费方启动类中加注解@EnableCircuitBreaker
服务消费方的xxcongtroller.java中需要设置熔断的方法上加注解
@HystrixCommand(commandProperties = {
@HystrixProperty(name = “execution.isolation.thread.timeoutInMilliseconds”, value = “4000”)
}) // application.yml配置中也可设置
springCloud框架,包含eureka,service provider,consumer搭建

或者在配置文件application.yml中设置熔断时长:
Hystrix:
command:
default: #对该服务中所有方法的熔断时间设置
execution:
isolation:
thread:
timeoutInMilliseconds: 2000 熔断时长为2s.