手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)

Spring Cloud全文目录

源码

什么是微服务?有手就行

SpringCloud简介与5大常用组件

一、手把手教你搭建SpringCloud项目(一)搭建Maven父工程,傻瓜式操作

二、手把手教你搭建SpringCloud项目(二)生产者与消费者

三、手把手教你搭建SpringCloud项目(三)集成Eureka服务注册中心

四、手把手教你搭建SpringCloud项目(四)EurekaServer集群版搭建

五、手把手教你搭建SpringCloud项目(五)生产者集群版搭建

六、手把手教你搭建SpringCloud项目(六)actuator微服务信息完善与Eureka自我保护机制

七、手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)

八、手把手教你搭建SpringCloud项目(八)集成Consul服务注册中心

九、手把手教你搭建SpringCloud项目(九)集成Ribbon负载均衡器

十、手把手教你搭建SpringCloud项目(十)集成OpenFeign服务接口调用

十一、手把手教你搭建SpringCloud项目(十一)集成Hystrix之服务降级

十二、手把手教你搭建SpringCloud项目(十二)集成Hystrix之服务熔断

十三、手把手教你搭建SpringCloud项目(十三)集成Hystrix之图形化Dashboard实时监控

十四、手把手教你搭建SpringCloud项目(十四)集成Gateway新一代服务网关

十五、手把手教你搭建SpringCloud项目(十五)集成Config分布式配置中心

十六、手把手教你搭建SpringCloud项目(十六)集成Bus消息总线

十七、手把手教你搭建SpringCloud项目(十七)集成Stream消息驱动

十八、手把手教你搭建SpringCloud项目(十八)集成Sleuth分布式链路跟踪

文章持续更新中,欢迎关注!

服务发现简介

各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件上(eureka,zookeeper,Consul),服务发现组件会存储这些信息。服务消费者会从服务发现组件查询服务提供者的网络地址,然后根据该地址调用服务提供者的接口。各个微服务与服务发现组件使用一定的机制来维持心跳,服务发现组件若发现有服务没有提供心跳,那么服务发现组件会将该服务剔除。微服务网络地址发生变更(例如实例增减或者IP端口发生变化等),会重新注册到服务发现组件上,使用这种方式,可以避免因网络变化导致服务之间的通讯停止,服务消费者也无须人工的修改网络地址。简单的说就是对于注册到Eureka中的微服务,可以通过服务发现来获得该服务的信息。

服务发现的代码实例

1.我们需要在springcloud-provider-payment生产者服务中的Controller中修改,如下:

    @Autowired
    private DiscoveryClient discoveryClient;

    //获取服务信息
    @GetMapping(value = "/payment/discovery")
    public Object discovery() {
        List<String> services = discoveryClient.getServices();//得到所有的微服务
        for (String s : services) {
            log.info("********注册到eureka中的服务中有:" + services);
        }
        List<ServiceInstance> instances = discoveryClient.getInstances("SPRINGCLOUD-PAYMENT-SERVICE");//的到一个具体微服务的所有实例
        for (ServiceInstance s : instances) {
            log.info("当前服务的实例有" + s.getServiceId() + "\t" + s.getHost() + "\t" + s.getPort() + "\t" + s.getUri());
        }
        return this.discoveryClient;
    }

手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)_第1张图片

2.在启动类上加上注解@EnableDiscoveryClient,如下:

package com.dyh.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);
    }

}

手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)_第2张图片

3.测试

启动8001服务,访问http://localhost:8001/payment/discovery获取当前注册中心的服务信息,如下图:

可以看到客户端和服务端都有如下两个服务:springcloud-order-server和springcloud-payment-service
手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)_第3张图片

我们将信息通过日志打印到了控制台上,现在看一下控制台打印的信息,如下图:
手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)_第4张图片
我们可以看到当前注册中心有springcloud-order-server和springcloud-payment-service这两个服务。还可以看到springcloud-payment-service服务下的实例的ip和端口还有uri。这个可以获取很多的服务信息。大家可以自己看一下,根据自己的需要获取。如下图:
手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)_第5张图片
是不是so easy?

手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)_第6张图片

下一篇文章学习Consul的服务注册与发现,持续关注、点赞。我们持续更新中。

手把手教你搭建SpringCloud项目(七)Eureka实现服务发现(Discovery)_第7张图片

你可能感兴趣的:(SpringCloud,eureka,spring,cloud,微服务)