五. 服务的注册 DiscoveryClient 与 ServiceRegistry 服务的发现的简单介绍

一. 基础解释

只是简单记录一下推荐看大神的博文

  1. 最早的时候服务发现注册都是通过DiscoveryClient来实现的,随着版本变迁把DiscoveryClient服务注册抽离出来变成了 ServiceRegistry 抽象,专门负责服务注册,DiscoveryClient 专门负责服务发现。还提供了负载均衡的发现 LoadBalancerClient 抽象
  2. 在 SpringCloud + 注册中心 实现微服务远程调用,服务启动类上添加 @EnableEurekaClient (Eureka 作为注册中心时使用) 或添加 @EnableDiscoveryClient (ZooKeeper 与 Consul作为注册中心时使用),开启服务注册与发现,其底层就是通过 DiscoveryClient 实现服务注册, 实现服务发现

二. DiscoveryClient 发现

DiscoveryClient 是一个接口,以 Eureka 服务发现为例,通过该接口的具体实现类 EurekaDiscoveryClient 在 Eureka 注册中心获取注册的服务信息
DiscoveryClient 的使用示例(底层也是调用这些方法去获取Eureka上注册的服务信息)

	@Autowired
    private DiscoveryClient discoveryClient;

    @RequestMapping(value = "/testDiscoveryClient", method = RequestMethod.GET)
    @ResponseBody
    public void testDiscoveryClient(){
    	//获取注册中心上注册的所有服务
        List<String> serviceList = discoveryClient.getServices();
        serviceList.stream().forEach(s ->System.out.println("当前eureka注册的服务"+s));

        //根据服务名称,获取注册中心上指定服务实例,集群环境可能存在多个返回list
        List<ServiceInstance> serviceInstanceList =  discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        serviceInstanceList.stream().forEach(
                instance ->{
                	//获取指定服务的指定信息
                    System.out.println("服务id:"+instance.getServiceId());
                    System.out.println("服务主机名称:"+instance.getHost());
                    System.out.println("服务端口号:"+instance.getPort());
                    System.out.println("服务uri地址:"+instance.getUri());
                }
        );
    }

三. ServiceRegistry 注册

(不要看了可能是错的,我只是记录一下)
ServiceRegistry 是一个接口,以 Eureka 服务注册为例,通过该接口的具体实现类 EurekaServiceRegistry 向 Eureka 注册中心注册的服务
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值