行业资讯 2025年08月6日
0 收藏 0 点赞 629 浏览 1703 个字
摘要 :

文章目录 一、什么是服务发现 二、服务发现实现 一、什么是服务发现 简单来说:服务发现有三个角色,服务提供者、服务消费者和服务中介。服务中介是联系服务提供者和服……




一、什么是服务发现

简单来说:服务发现有三个角色,服务提供者、服务消费者和服务中介。服务中介是联系服务提供者和服务消费者的桥梁。

服务提供者将自己提供的服务地址注册到服务中介,服务消费者从服务中介那里查找自己想要的服务地址,然后使用这个服务。

服务中介提供多个服务,每个服务对应多个服务提供者。服务中介就是一个字典,字典里有很多key-value键值对,key是服务名称,value是服务提供者的地址列表。服务注册就是调用字典的put方法放东西,服务查找就是调用字典的get方法获取东西。当服务提供者新加入时,要求服务中介能及时告知服务消费者。

二、服务发现实现

对于注册进euerka里面的微服务,可以通过服务发现来获得该服务的信息。

基于之前的项目,我们以cloud-provider-payment8001为例进行修改实现:
1)修改8001的PaymentController,添加springframework包下的DiscoveryClient注解注入:

@Resource
private DiscoveryClient discoveryClient;

再添加一个Get请求方法:

@GetMapping(value = "/payment/discovery")
public Object discovery(){
    //  获取所有服务
    List<String> services = discoveryClient.getServices();
    //  遍历服务
    for (String service : services) {
        System.out.println("service: " + service);
    }

    // 获取服务ID为CLOUD-PAYMENT-SERVICE中的所有实例
    List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
    // 遍历实例
    for(ServiceInstance instance: instances){
        System.out.println(instance.getServiceId() + "\\t" + instance.getHost() + "\\t" + instance.getPort()
                + "\\t" + instance.getUri() + "\\t");
    }
    return this.discoveryClient;
}

2)修改主启动类,在主启动类PaymentMain8001上加上@EnableDiscoveryClient注解:

package com.panziye.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PaymentMain8001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8001.class,args);
    }
}

3)测试
先启动7001、7002、7003服务注册中心,再启动8001、8002和80模块,然后访问http://localhost:8001/payment/discovery测试:
服务发现Discovery-Eureka—SpringCloud(H版)微服务学习教程(12)
查看IDEA后台日志打印:
服务发现Discovery-Eureka—SpringCloud(H版)微服务学习教程(12)
通过日志我们可以清楚地看到Eureka注册中心中所有的微服务实例的信息,因此服务发现可以帮助我们获得相关服务的信息。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/7855.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号