首页 > 其他分享 >微服务 – Spring Cloud – Eureka – Discovery 服务发现

微服务 – Spring Cloud – Eureka – Discovery 服务发现

时间:2023-06-20 23:31:40浏览次数:26  
标签:service Spring PaymentController Eureka instance cloud a84f2b64acc1e87a payment 

如何发现服务呢?

服务注册到 Eureka 集群中。需要通过 RestTemplate和@LoadBalanced 实现服务发现调用(http) 。

在上一篇笔记中,order 服务 通过 estTemplate和@LoadBalanced 实现调用 payment服务. 是通过注册在 Eureka 集群中的服务名称来调用的。

那么如何发现这些服务呢?也就是说如何知道注册在 Eureka 集群中的服务名称

通过DiscoveryClient 和 @EnableDiscoveryClient 注解实现

<font color="red">正常来讲,服务发现应该是服务调用者的事情。这里为了方便代码写在了PaymentController类里.只是为了实现自测</font>

主启动类

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PaymentMain8002 {

    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8002.class, args);
    }

}

控制器 PaymentController.java

@GetMapping(value = "/payment/discovery")
    public Object discovery() {
        List<String> services = discoveryClient.getServices();
        for (String service : services) {
            log.info("===================== service: " + service);
        }

        List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        for (ServiceInstance instance : instances) {
            log.info("********************** instance: " + instance.getServiceId()
                    + instance.getHost()
                    + instance.getPort()
                    + instance.getUri());
        }

        return this.discoveryClient;
    }

访问: localhost/payment/discovery

{
  "order": 0,
  "services": [
    "cloud-payment-service",
    "cloud-order-service"
  ]
}
2023-06-20 23:13:57.410  INFO [cloud-payment-service,a84f2b64acc1e87a,a84f2b64acc1e87a,true] 7444 --- [nio-8002-exec-1] c.j.s.controller.PaymentController       : ===================== service: cloud-payment-service
2023-06-20 23:13:57.411  INFO [cloud-payment-service,a84f2b64acc1e87a,a84f2b64acc1e87a,true] 7444 --- [nio-8002-exec-1] c.j.s.controller.PaymentController       : ===================== service: cloud-order-service
2023-06-20 23:13:57.412  INFO [cloud-payment-service,a84f2b64acc1e87a,a84f2b64acc1e87a,true] 7444 --- [nio-8002-exec-1] c.j.s.controller.PaymentController       : ********************** instance: CLOUD-PAYMENT-SERVICE192.168.2.618001http://192.168.2.61:8001
2023-06-20 23:13:57.412  INFO [cloud-payment-service,a84f2b64acc1e87a,a84f2b64acc1e87a,true] 7444 --- [nio-8002-exec-1] c.j.s.controller.PaymentController       : ********************** instance: CLOUD-PAYMENT-SERVICE192.168.2.618002http://192.168.2.61:8002

标签:service,Spring,PaymentController,Eureka,instance,cloud,a84f2b64acc1e87a,payment,
From: https://blog.51cto.com/u_15524534/6525988

相关文章

  • 简单记录下 Spring Boot 使用虚拟线程Virtual Threads(Java的协程)的方法
    在之前的文章中,简单描述了将springboot2.x升级springboot3.1的版本的过程。本文将简单介绍如何在spring中引入虚拟线程,在文章最后会放上一些关于虚拟线程的官方参考资料。JDK22会引来重要特性,VirtualThreads也就是协程功能。与主流的async、await方案(C#、JS等语言)相比......
  • 微服务 – Spring Cloud – Eureka - RestTemplate和@LoadBalanced 实现服务发现调用(
    背景:服务注册用的是Eureka集群。服务调用用的是注解@LoadBalanced和RestTemplate服务数量两个:order服务和pyment服务(order服务是调用者。payment服务是被调用者)首先将order服务和payment服务注册Eureka集群中。通过order调用payment服务Eureka集......
  • 3、SpringMVC
    1、简介1.1、mvc 1.2、SpringMVC基于原生的Servlet 2、使用引用......
  • 七、Spring Cloud Alibaba Sentinel简介
    随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。一、特性丰富......
  • 微服务 - Spring Cloud - Eureka Server单机和集群搭建、单机服务注册和集群服务注册
    Eureka服务管理Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能Eureka服务注册与发现Eur......
  • 使用python对AWS-CloudTrail-Json-日志文件key字段名称的提取
    关于AWS CloudTrail-在Console界面,默认只能看到最近90天的数据如果需要追踪更早的操作记录,得需要配置CloudTrail日志输出保存到s3在s3上不同的region位于不同的目录,最后会将某一天的日志,存放到那一天的目录/文件夹中,目录路径格式(部分)如:aws-account-xxx/CloudTrail/cn-nort......
  • Nacos注册中心原理以及Eureka和Nacos的区别与联系
    nacos注册中心:服务提供者在注册中心注册服务信息服务消费者从注册中心定时拉取服务。【服务列表缓存,每隔30拉取更新列表】消费者远程调用服务提供者。服务注册到Nacos时,可以选择注册为临时或非临时实例,默认是临时实例采用心跳检测,每隔30s向注册中心发送心跳检测,当......
  • SpringBoot学习笔记
    SpringBoot学习笔记学习资料分享,一定要点!!!示例代码跳转链接无效,查看完整笔记点击:https://gitee.com/pingWurth/study-notes/blob/master/springboot/spring-boot-demo/SpringBoot学习笔记.md官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/index......
  • Springboot web,三层架构, IOC&DI 使用总结2023
    Springbootweb,三层架构,IOC&DI使用总结2023一.spring.io全家桶springbootspringframework基础框架,配置繁琐,入门难度大--》springbootspringcloudspringsecurityspringdataspring发展到今天是一个生态圈,提供了若干个子项目,每个子项目用于完成特定的功能。二.sp......
  • Springboot实现WebSocket
    一、什么是webSocketWebSocket是HTML5下一种新的协议(Websocket协议本质上是一个基于tcp的协议),它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的,WebSocket是一个持久化的协议。二、修改配置文件在application.properties,修改内容为:server.port=......