![](https://csdnimg.cn/release/download_crawler_static/88479482/bg5.jpg)
b. 当 a 服务调⽤用 b 服务,a 服务会通过 Ribbon 检查本地是否有 b 服务实例例信息的缓存; c. Ribbon 会
定期从 eureka 刷新本地缓存。
10. eureka 的缺点。
a. 某个服务不不可⽤用时,各个 Eureka Client 不不能及时的知道,需要 1~3 个⼼心跳周期才能感知,但是,由于基于 Netflix 的
服务调⽤用端都会使⽤用 Hystrix 来容错和降级,当服务调⽤用不不可⽤用时 Hystrix 也能及时感知到,通过熔断机制来降级服
务调⽤用,因此弥补了了基于客户端服务发现的时效性的缺点。
11. eureka 缓存机制?
a. 第⼀一层缓存:readOnlyCacheMap,本质上是 ConcurrentHashMap:这是⼀一个 JVM 的 CurrentHashMap 只读缓存,这
个主要是为了了供客户端获取注册信息时使⽤用,其缓存更更新,依赖于定时器�的更更新,通过和 readWriteCacheMap 的值
做对⽐比,如果数据不不
⼀一致,则以 readWriteCacheMap 的数据为准。readOnlyCacheMap 缓存更更新的定时器�时间间隔,默认为 30 秒
b. 第⼆二层缓存:readWriteCacheMap,本质上是 Guava 缓存:此处存放的是 终的缓存, 当服务下线,过期,注册,状态
变
更更,都会来清除这个缓存⾥里里⾯面的数据。 然后通过 CacheLoader 进⾏行行缓存加载,在进⾏行行
readWriteCacheMap.get(key)的时候,⾸首先看这个缓存⾥里里⾯面有没有该数据,如果没有则通过 CacheLoader 的 load⽅方
法去加载,加载成功之后将数据放⼊入缓存,同时返回数据。 readWriteCacheMap 缓存过期时间,默认为 180 秒 。
c. 缓存机制:设置了了⼀一个每 30 秒执⾏行行⼀一次的定时任务,定时去服务端获取注册信息。获取之后,存⼊入本地内存。
12. rpc 和 http 的区别,使⽤用场景? a. 区别:
传输协议
RPC,可以基于 TCP 协议,也可以基于 HTTP 协议
HTTP,基于 HTTP 协议传输
效率
RPC,使⽤用⾃自定义的 TCP 协议,可以让请求报⽂文体积更更⼩小,或者使⽤用 HTTP2 协议,也可以很好的减少报⽂文的
体积,提
⾼高传输效率