SpringCloud——Eureka

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

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

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

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

目录

  • 回顾:
  • 一、搭建Eureka
  • 二、服务注册
  • 三、模拟
  • 四、服务拉取
  • 五、知识点
    • 1. @LoadBalance
    • 2. @EnableEurekaServer

回顾:

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

一、搭建Eureka

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

  1. 引入依赖 eureka服务端

eureka的客户端在其他模块里

<dependencies>
  
  <dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
  dependency>
dependencies>
  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. 创建application.yml

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

server:
  port: 10086 # 端口号
spring:
  application:
    name: eurekaserver # eureka服务名
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka/ # eureka的地址信息

二、服务注册

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

  1. 加入依赖 eureka-client

<dependency>
  <groupId>org.springframework.cloudgroupId>
  <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
  1. 添加application.yml

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

spring:
  application:
    name: userservice # eureka服务端
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka/ # eureka的地址信息

三、模拟

按以下操作,将客户端进行复制。
SpringCloud——Eureka_第1张图片
SpringCloud——Eureka_第2张图片
注意添加端口号
此时,访问是无论8081还是8082都可以访问到user
eg:
http://localhost:8081/user/1
http://localhost:8082/user/1

四、服务拉取

  1. 修改访问路径

将localhost:8081修改为userservice
这里的userservice来自
SpringCloud——Eureka_第3张图片

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

完整代码

/**
 * 查询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. 添加@LoadBalanced

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

/**
 * 注册RestTemplate
 * @return
 */
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}

五、知识点

1. @LoadBalance

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

2. @EnableEurekaServer

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

你可能感兴趣的:(SpringCloud,eureka,spring,cloud,java)