请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

微服务上面做一个缓存

问题一:老师,这个缓存一般用哪个类来存储?Map?Redis?还是别的线程安全的集合?还是其他工具类?

问题二:微服务上做一个缓存,通过定时任务来做。以内容微服务为例,由于内容微服务的实例有多个,那么所有的内容微服务的实例都要去更新?

问题三:本地缓存的微服务的地址,这个地址是ip的形式吗?例如:http://192.168.1.1:8080/

问题四:本地缓存的地址如何和Ribbon/Feign一起使用?我以Ribbon为例描述问题,使用了Ribbon后,内容中心调用微服务的接口的代码:

UserDTO userDTO = this.restTemplate.getForObject("http://user-center/users/{userId}, UserDTO.class, userId);

这行代码的意思是:Ribbon会自动的把user-center名称转换成用户中心在nacos上面的地址,并且去进行负载均衡算法,计算出一个实例给我们请求。

那本节你提到的微服务调用是直接调用的,从本地缓存拿到想要调用的微服务的地址,不是先去请求服务发现组件再去调用的。

那整合了Ribbon后,本地缓存这个操作还需要吗?如果需要,怎么一起协作呢?

正在回答 回答被采纳积分+3

1回答

大目 2022-11-28 11:17:36

问题1:本地缓存,一个map即可

问题2:是的

问题3:可以是基于IP的,也可以是主机名的。对于spring cloud alibaba,是基于IP;如果用的spring cloud,注册中心用的eureka,那默认是基于主机名的,可以配置。

问题4:ribbon内部实现了服务发现缓存。

0 回复 有任何疑惑可以回复我~
  • 提问者 LittleGoblin #1
    Ribbon内部实现了服务发展缓存,那就不需要我们手动的写一个定时任务了吧?(nacos章提到通过用定时任务做一个缓存)
    回复 有任何疑惑可以回复我~ 2022-11-28 11:26:35
  • 大目 回复 提问者 LittleGoblin #2
    是的,不需要的哦
    回复 有任何疑惑可以回复我~ 2022-12-15 14:40:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信