当前位置:   article > 正文

SpringCloud——Eureka

SpringCloud——Eureka

请添加图片描述
个人名片:

博主酒徒ᝰ.
个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志三人行,必有我师焉。

请添加图片描述
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

回顾:

在服务拆分中发现了一个问题,那就是端口号。
当项目很大,拆分很多次时,一定会出现很多user-service,代表不同的服务。这时user就会出现多个端口号。
我们不肯能每一种端口号的写一次,这是就出现了Eureka

一、搭建Eureka

在cloud-demo模块下新建一个eureka-service模块

  1. 引入依赖 eureka服务端

eureka的客户端在其他模块里

<dependencies>
  <!--eureka服务端-->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 创建启动类

注意添加@EnableEurekaService注解

package cn.itcast.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  1. 创建application.yml

需要添加端口号,名字,地址

server:
  port: 10086 # 端口号
spring:
  application:
    name: eurekaserver # eureka服务名
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka/ # eureka的地址信息
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

二、服务注册

注册Eureka客户端,以user为例。
之前注册的是eureka-server,也就是服务端,那么,有服务端就需要客户端(eureka-client)去使用。

  1. 加入依赖 eureka-client
<!--eureka客户端-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 添加application.yml

注意其中存在spring开头,在其后添加相应内容,并注意更改对应的name。

spring:
  application:
    name: userservice # eureka服务端
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka/ # eureka的地址信息
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

三、模拟

按以下操作,将客户端进行复制。
image.png
image.png
注意添加端口号
此时,访问是无论8081还是8082都可以访问到user
eg:
http://localhost:8081/user/1
http://localhost:8082/user/1

四、服务拉取

  1. 修改访问路径

将localhost:8081修改为userservice
这里的userservice来自
image.png

//修改后:
String url = "http://userservice/user/" + userId;
  • 1
  • 2

完整代码

/**
 * 查询user信息
 * @param orderId
 * @return
 */
@GetMapping("{orderId}")
public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
    //1.根据id查询订单
    Order order = orderService.queryOrderById(orderId);
    //2.获取订单中的userid
    Long userId = order.getUserId();
    //3.设置查询user的地址
//        String url = "http://localhost:8081/user/" + userId;
    String url = "http://userservice/user/" + userId;
    //3.1查询user
    User user = restTemplate.getForObject(url, User.class);
    //4.封装查询结果
    order.setUser(user);

    return order;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  1. 添加@LoadBalanced

在启动类中天界@LoadBalance注解,
添加后代码

/**
 * 注册RestTemplate
 * @return
 */
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

五、知识点

1. @LoadBalance

开启负载均衡
注意:开启负载均衡,在RestTemplate中的Bean上加入一个@LoadBalance注解即可。

2. @EnableEurekaServer

eureka启动类中添加,表示使用Eureka注册中心。
在eureka模块中天界了Eureka相应操作之后,记得在eureka的客户端的启动类中加入@EnableEurekaClient注解。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/530466
推荐阅读
相关标签
  

闽ICP备14008679号