SpringCloud学习二(Eureka注册中心)

SpringCloud学习二(Eureka注册中心)

项目地址:https://github.com/ZhongChunle/cloud-demo.git

1、搭建eureka-server

首先大家注册中心服务端:eureka-server,这必须是一个独立的微服务

在cloud-demo父工程下,创建一个子模块eureka-server

1.2、引入eureka依赖

引入SpringCloud为eureka提供的starter依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
1.3、编写启动类

也可以直接创建一个springboot的模块

给eureka-server服务编写一个启动类,一定要添加一个@EnableEurekaServer注解,开启eureka的注册中心功能:

package com.zcl;

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

/**
 * 项目名称:cloud-demo
 * 描述:引导类
 *
 * @author zhong
 * @date 2022-05-27 7:05
 */
@EnableEurekaServer
@SpringBootApplication
public class Application {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(Application.class, args);
    }
}

1.4、创建application.yml配置文件
server:
  port: 10086

#  微服务名称
spring:
  application:
    name: eurekaserver

eureka:
  client:
    service-url: # 配置eureka地址
      defaultZone: http://127.0.0.1:10086/eureka

1.5、启动Eureka的引导类,如下是启动后的eureka页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xCYEdsXd-1653704030261)(images/Eureka/1、eureka启动页面.png)]

2、Eureka服务注册

下面,我们将``user-service模块和order-server`模块注册到eureka-server中去。

2.1、引入依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.2、配置文件

在user-service中,修改application.yml文件,添加服务名称、eureka地址:

spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

启动多个user-service实例

为了演示一个服务有多个实例的场景,我们添加一个SpringBoot的启动配置,再启动一个user-service。

首先,复制原来的user-service启动配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tv38DlBz-1653704030262)(images/Eureka/3、复制实例.png)]

然后,在弹出的窗口中,修改启动端口信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HSqwXR1c-1653704030263)(images/Eureka/4、修改启动端口.png)]

启动所有的端口服务,查看eureka-server管理页面:

如下就是服务列表实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rbiIOi2D-1653704030263)(images/Eureka/5、实例列表.png)]

3、在order-server完成服务的拉取,实现负载均衡

最后,我们要去eureka-server中拉取user-service服务的实例列表,并且实现负载均衡。

3.1、在order-service的OrderApplication中,给RestTemplate这个Bean添加一个@LoadBalanced注解:
package cn.itcast.order;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {
    
    

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

    }

    /**
     * 创建RestTemplate并注入spring容器
     * @return
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
    
    
        return new RestTemplate();
    }

}
3.2、修改order-service服务中的cn.itcast.order.service包下的OrderService类中的queryOrderById方法。修改访问的url路径,用服务名代替ip、端口:
// 2、利用RestTemplate发起http请求,查询用户
// String url = "http://localhost:8081/user/"+order.getUserId();
String url = "http://userserver/user/"+order.getUserId();

userserver:其实就是上面服务注册的eureka的服务名称

3.3、重启order-server服务,访问返回如下json数据

我们修改了访问路径为服务的名称,你们我们又有两个user-server服务实例,那么负载均衡就会为我们论调服务实例,来完成user-server的服务拉取获得user的信息

{
    
    
  "id": 101,
  "price": 699900,
  "name": "Apple 苹果 iPhone 12 ",
  "num": 1,
  "userId": 1,
  "user": {
    
    
    "id": 1,
    "username": "柳岩",
    "address": "湖南省衡阳市"
  }
}

猜你喜欢

转载自blog.csdn.net/baidu_39378193/article/details/125015140