SpringCloud组件

Eureka

通过两种方式进行远程调用
@EnableEurekaClient
1.RestTempLate 通过@Bean注入到springboot容器
@LoadBalanced让RestTemplate在请求时拥有客户端负载均衡能力,支持以别名方式进行远程调用
restTemplate.getForobject(url.<>.class)底层通过HttpClient技术实现远程调用
2.Feign
启动时,程序会进行包扫描,扫描所有包下所有@FeignClient注解的类,并将这些类注入到spring的IOC容器中。当定义的Feign中的接口被调用时,通过JDK的动态代理来生成RequestTemplate。
RequestTemplate中包含请求的所有信息,如请求参数,请求URL等。
RequestTemplate声场Request,然后将Request交给client处理,这个client默认是JDK的HTTPUrlConnection,也可以是OKhttp、Apache的HTTPClient等。
最后client封装成LoadBaLanceClient,结合ribbon负载均衡地发起调用。

Eureka自我保护机制,默认情况下EurekaClient定时向EurekaServer端发送心跳包,如果Eureka在一定时间内没有收到client发送的心跳包,默认90s,便会从服务注册中剔除该服务,但是在短时间丢失了大量服务实例心跳,这时候eurekaServer会开启自我保护机制,不会剔除该服务,原因为了防止EurekaClient是可以正常访问,只是网络访问不同,本地环境建议禁止,生产环境开启。

Hystrix

默认超时时间1秒
配置文件中设置属性hystrix.command.default.execution.timeout.enable:flased
浏览器在1秒内没有收到服务器的响应,正常业务逻辑会执行,然后走降级方法
在SpringCloud中ribbon负载均衡客户端,会从Eureka注册中心服务端上获取服务注册信息列表,然后在本地实现轮询负载均衡策略
负载均衡算法:总请求量%服务器数量得到下标服务器位置

1.启动注册中心
2.启动服务
3.服务在启动的时候,会把当前服务信息,比如服务地址的端口,以别名方式注册到注册中心上
4.消费者在调用接口的时候,使用服务别名也就是serviceId去注册中心上获取实际rpc远程调用地址
5.如果消费者获取实际rpc远程调用地址后,在使用本地httpCLient技术实现调用,首先会缓存在jvm内存中,默认情况下eureka每30秒更新一次服务调用地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值