Spring Cloud Eureka 服务注册与调用

1. SpringCloud Eureka 介绍

SpringCloud Eureka 使用 Netflix Eureka来实现服务注册与发现,它既包含了服务端组件,也包含了客户端组件,均用Java语言编写。比较适用于通过Java实现的分布式系统。

Eureka 服务端的服务治理机制提供了完备的 RESTful API,所以也支持其他语言构建的微服务纳入Eureka的服务治理体系中,不过需要自己实现客户端程序。

1.1 Eureka 服务端

Eureka服务端也称为注册中心,支持高可用配置。依托于强一致性,提供良好的服务实例可用性,可以应对多种不同的故障场景。

1.2 Eureka 客户端

Eureka客户端主要处理服务的注册与发现,通过注解和参数配置的方式,嵌入在客户端应用程序的代码中,在应用程序运行时,Eureka客户端向注册中心注册自身提供的服务并周期性地发送心跳来更新它的服务租约。

2. SpringCloud Eureka 搭建测试

2.1 搭建服务注册中心(服务端)

  1. 创建一个moudle->Spring Initializr,选择依赖 Eureka Server

在这里插入图片描述

  1. 配置文件 application.properties (或者yml)
# 应用名称
spring.application.name=EUREKA-SERVER
# 端口号
server.port=8080
# 主机地址
eureka.instance.hostname=localhost
# 是否注册自己
eureka.client.register-with-eureka=false
# 检索服务
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone= http://${eureka.instance.hostname}:${server.port}/eureka
  1. 允许EurekaServer,添加 @EnableEurekaServer 注解

在这里插入图片描述

  1. 启动moule,进入 http://主机名:端口号查看

在这里插入图片描述

可以看到Eureka服务器已经搭建成功,但是此时还没有注册的服务实例

2.2 注册服务提供者1(客户端1)

  1. 新建一个moudle->Spring Initializr,选择依赖 Eureka Discovery Client

在这里插入图片描述

  1. 配置文件 application.properties (或者yml)
# 服务名称
spring.application.name=EUREKA-CLIENT1
# 服务运行端口号
server.port=8081
# 服务端注册中心的地址
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka
  1. 添加 @EnableDiscoveryClient 注解
    在这里插入图片描述

  2. 查看注册中心(服务端)

在这里插入图片描述

  1. 编写一个Controller查看自身的信息
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
@RestController
public class Client1Controller {

    @Autowired
    private DiscoveryClient discoveryClient;

    @GetMapping(value = "/hello")
    public String hello(){
        List<ServiceInstance> instances = discoveryClient.getInstances("EUREKA-CLIENT1");
        ServiceInstance serviceInstance = instances.get(0);
        System.out.println((serviceInstance.getHost() + serviceInstance.getPort() + serviceInstance.getServiceId()));
        return "Hello World";
    }
}

键入 http://localhost:8081/hello

浏览器显示:

在这里插入图片描述
控制台输出:

在这里插入图片描述
可以看到,服务注册成功

3. 服务调用测试

3.1 注册另外的服务提供者2(客户端2)

基本的过程和pom文件与服务提供者1基本相同,注意 <host:port> 不能相同(如果是单机修改端口号即可,在我这里设置为8082)

在这里插入图片描述

3.2 调用其他的服务

我们在注册的服务2中调用已经注册的服务1。

在服务2中编写Controller

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class Client2Controller {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    @Autowired
    public RestTemplate restTemplate;

    @GetMapping(value = "/testHello")
    public String testHello(){
        String string = restTemplate.getForObject("http://EUREKA-CLIENT1/hello", String.class);
        return "The Result From Client Is : " + string;
    }
}

访问: http://localhost:8082/testHello,如图所示:

在这里插入图片描述
调用成功~

4. 总结

4.1 综述

核心就是编写注册中心和各个服务

4.2 注册中心要点

  1. 引入Eureka Server 依赖
  2. 配置文件中配置各项(主机地址,端口号,注册中心地址,是否注册自己,检索服务。。。)
  3. 在Application类上加上 @EnableEurekaServer 注解

4.3 服务注册要点

  1. 引入 Eureka Discovery Client 依赖
  2. 配置文件(服务名称、主机号、端口号、注册中心地址)
  3. 在Application类上加上 @EnableDisconveryClient 注解
  4. 在Controller中编写RESTful服务项

4.4 服务调用要点

  1. 通过@Bean和@LoadBalance注解重新注入 RestTemplate
  2. 通过RestTemplate调用别的服务,获得结果
  3. 进行业务逻辑处理
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值