SpringCloud

1.nacos除了配置中心还能干什么

除了作为配置中心之外,nacos还可以实现服务注册和发现功能。服务提供者可以在启动时将自己注册到nacos中,并声明自己提供的服务名、ip地址和端口等信息。而服务消费者则可以通过nacos查询到相应的服务提供者,并直接调用其提供的服务。

此外,nacos还具备流量管理、健康检查、动态dns解析等多种功能,可用于构建面向微服务架构的云原生应用系统。

2.Feign的Bean和普通Bean有什么区别

  1. 作用范围:feign的bean是通过feignclient注解生成并且只在声明该注解的接口中使用,而普通bean可以在整个应用程序中使用。

  2. 实现方式:feign的bean是由feign框架在运行时动态创建的代理对象,它会根据接口定义自动生成调用远程服务的代码,而普通bean是静态实例化的对象。

  3. 依赖注入:使用feignclient注解声明的接口需要注入feignclientbuilder才能创建动态代理对象;而普通bean使用@autowired、@resource等注解进行依赖注入。

  4. 参数传递:feignclient注解中定义的url、path等属性会被动态生成的feign代理对象使用,在请求远程服务时会合并到请求url中;普通bean中定义的属性则直接使用,通常是在本地方法中调用。

综上所述,feign的bean和普通bean主要区别在于它的作用范围和实现方式。如果需要调用远程服务,推荐使用feignclient注解声明接口并通过feignclientbuilder创建代理对象;如果不需要调用远程服务,则可以使用普通bean。

3.Feign注解都有那些参数

  1. value:指定要访问的微服务名称,可以填写具体的服务名称或通过naming查找服务。

  2. url:指定服务的url地址,可以是完整的uri或用占位符指定部分url。

  3. path:对应于服务的context-path路径,只有当url没有指定时生效。如果value值中不包含scheme或host,则会将其添加到目标url中。

  4. configuration:指定自定义的feign配置类,可以覆盖默认的feign配置。

  5. fallback:指定当请求失败时的回退逻辑处理类,需要实现该接口。

  6. decode404:默认情况下,当http响应代码为404时,feign会抛出异常。设置decode404=true可以使feign将引发http 404异常映射为空值。

  7. primary:feign中可能同时存在多个相同名称的bean定义,此属性可以指定优先选取哪个bean作为代理对象。

  8. name:注解元素的别名,即value的同义词,建议用value替代。

  9. contextid:用于限定feign客户端的请求范围,当使用@feignclient注解多个相同微服务名称的接口时,可用此属性来保证不同接口之间的隔离。

  10. qualifiers:由于存在多个相同名称的bean定义,该注解元素可以指定任意的bean作为代理对象。如@qualifier("myqualifier")。

4.如何解决缓存不一致

  1. 使用volatile关键字

  在java中,volatile关键字可以确保多个线程之间对一个变量的读和写操作是同步的,即它们都能看到最新的值。因此,如果你在多个线程之间使用共享变量并且需要确保它们的缓存都是最新的,则可以使用volatile修饰这个变量。

  1. 使用synchronized关键字

   如果你需要确保多个线程之间访问该变量时是互斥的,可以使用synchronized关键字。它可以确保任何时候只有一个线程可以访问一个对象或者类的同步方法或者同步块

  1. 使用threadlocal

  如果每个线程都需要自己的共享变量副本,并且与其他线程的相互影响不重要,则可以使用threadlocal。它可以保证每个线程都拥有自己的共享变量副本,从而避免了线程之间的竞争和缓存不一致问题。

 

posted @ 2023-04-15 18:51  空空大首领  阅读(31)  评论(0编辑  收藏  举报