发送心跳和过期时间
拉取服务的间隔时间:
失效剔除和自我保护
因为保护机制是宁可放过一千也不错杀一个,所以有的服务已经关了他也会继续显示没关,所以给开发带来不方便就要关闭这个保护机制
day2总结
1:远程调用技术:rpc http
rpc协议:自定义数据格式,限定技术,传输速度快,效率高 dubbo
http协议:统一的是数据格式,不限定技术 rest接口 springcloud就是基于http协议
2:什么是springcloud
微服务架构的解决方案,是很多组件的集合
eureka:注册中心,服务的注册与发现
zuul:网关组件,路由请求,过滤器(这里面包含ribbon hystrix,相当于jdk包含jre jvm一样,有一个jdk就不用在弄jre jvm,因为它包含了另外两个)
ribbon:负载均衡组件
hystrix:熔断组件(个人理解为相当于家里用电的闸刀,当电用的功率太大就为了保护电路就跳闸了,hystrix就是当负载太大就关掉服务)
3:eureka
注册中心:
服务端的eureka步骤:
(1:应用启动类 2:配置spring.application.name" "(里面的名称作为以后的的名字或者id)3:在引导类上加@EnableEurekaServer)
客户端(不管消费者还是服务者都是要用Client):
(1:引入启动器, 2:配置spring.application.name eureka.client.service-url.defaultZone=http://localhos:10086/eureka 3:@EnableEurekaClient)
负载均衡Ribbon
如上图代码我们只能调用一个客户,如果有多个就不知道怎么调用那个了,Ribbon会提供选择调用哪个
步骤:1:引入启动器 2:覆盖默认配置 3:在引导类引用启动器
如上图,淘汰原本的instance,使用 spring.application.name" "的名字,如果两个服务器的名字一样,那么访问的时候默认是轮询的方式,比如有两个服务器8801,8802,然spring.application.name" "名字相同,这时候就先访问8801再8802再8801再8802......。这样的
的原理是 次数%2 如果是1那么访问那个端口,如果是0那么访问那个端口,在引导类中添加启动器的时候是加在注入RestTemplate的注解的下边,如下图@LoadBalanced就是Ribbon的启动器
hystrix:英文意思是豪猪,全身是刺看起来不好惹,是一个保护机制。是一个延迟和容错库,用于隔离远程服务,第三方库,防止出现级联失败
1:雪崩问题:
~线程隔离~
1:添加依赖
spring-cloud-starter-netflix-hystrix
2:添加启动类
@EnableCircuitBreaker
实际操作:例如我的例子创建一个熔断方法querUserByIdFallvack,然后在需要加熔断方法的方法上加一个@HystrixCommand注解,如果注解有指定
如图所示,那么就熔断的时候去指定的熔断方法里,如果没有指定
那么就去全局默认的指定的熔断方法:@DefaultProperties(defaultFallback = "querUserMath")
@SpringCloudApplication//相当与是@SpringBootApplication+@EnableDiscoveryClient+@EnableCircuitBreaker
当熔断完以后需要手动去处理链接线路,这时候Hystrix可以实行相当于一个闸,当太大时就断开不允许任何的访问,过一段时间就开始放进去少量的访问,如果可以正常处理就合上闸恢复正常,如果还是不能访问就继续断闸。如下图
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 6000
这是调整hystrix 的超时时间,默认的是1s,如果觉得时间太短可以调,实现就是如果连接超过设置的时间了还没有响应,那么就认为熔断了
service-provider: #服务提供方的名称
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandonRule
这段代码是如果eureka的名字相同的话,那么就可以调整是轮询还是随机
feigh:
feign包含RestTemplate,所以以后就不用在拼路径拼参数,具体怎么拼如图
有了feign之后应该去掉的是如下图:
是创建一个接口添加一个@@FeignClient("service-provider") service-provider是eureka的名称,在接口中写一写方法
虽然feign继承了hystrix,但是也要手动去打开熔断的如下图所示
feihn总结
zuul网关:
是相当于守门员,验证等权限等,具体如下图所示:
path是访问的前缀是、service-provider就访问下边的指定的地址
如下图访问就是相当于访问的8082的地址
更先进的配置整合eureka
加上eureka配置然后
如下图配置:
但是在网站上游览的时候要把routes下边的路由名称加上,如上上一个图地址,如果routes下边的路由名称为user,那么地址就为localhost:10010/user/user/1
zuul过滤器:
过滤器:



