服务发现的领域模型(命名空间、组、集群、实例)

领域模型是用来对注册到nacos上面的微服务进行隔离以及逻辑划分。
服务发现 - 图1
配置如下:

  1. cloud:
  2. nacos:
  3. discovery:
  4. server-addr: localhost:8848
  5. #命名空间,值是nacos服务创建的唯一key
  6. namespace: 541a64ac-65af-41e9-8a66-115dda2285a1
  7. #组
  8. group: 1
  9. #集群
  10. cluster-name: SH

DiscoveryClient

这是Spring Cloud提供的统一的服务发现抽象接口,提供了公共的服务发现api,但是没有差异化的方法。

NacosDiscoveryProperties

该对象是一个nacos的信息对象,在ioc容器里面,可以直接注入使用,通过该对象可以获取到当前服务的所有信息,包括领域模型里面的数据。

@Autowired
private NacosDiscoveryProperties nacosDiscoveryProperties;

NacosServiceManager

在高版本的nacos里面(比如1.8)一部分关于服务注册查询等管理对象的获取使用从NacosDiscoveryProperties对象里面抽取了出来形成了NacosServiceManager对象,我们对服务的一些操作或则服务注册核心对象的获取都可以通过该对象来得到。

@Autowired
private NacosServiceManager nacosServiceManager;

NamingService

这是nacos的服务注册与发现对象,可以通过它来进行服务的注册以及服务查询,查询提供了一些负载均衡算法,比如通过权重进行服务发现。该对象针对版本不一样可以通过NacosDiscoveryProperties或则NacosServiceManager对象来进行获取。

RestTemplate

RestTemplate是一个http客户端,通过它能够在java端发起http请求。可以用它来进行服务间的调用。

  1. 获取RestTemplate对象,可以new也可以放入容器

    @Configuration
    public class BaseConfig {
     @Bean
     public RestTemplate getRestTemplate() {
         RestTemplate rs = new RestTemplate();
         return rs;
     }
    }
    
  2. 访问服务:

    @Autowired
    RestTemplate rt;
    String value = rt.getForObject("http://ip:port/user/findUser", String.class);