天天看点

Spring Cloud微服务技术之Eureka注册中心配置前言一、Eureka注册中心基本原理二、Eureka服务注册与发现

文章目录

  • 前言
  • 一、Eureka注册中心基本原理
  • 二、Eureka服务注册与发现
    • 1.引入父工程依赖
    • 2.向需要注册的微服务中引入Eureka依赖
    • 3.编写配置
    • 4. 同一服务配置多个实例
    • 5. 服务发现

前言

它来啦~ 它来啦~ 微服务它来啦!

在微服务中 , 服务的拆分与远程调用借助于注册中心实现 ;

Eureka和Nacos则是两种比较主流的注册中心

提示:以下是本篇文章正文内容,下面案例可供参考

一、Eureka注册中心基本原理

在服务做远程调用时 , 如果将服务提供方的地址硬编码到代码中 , 将来业务扩展或地址变更 , 修改地址很不方便 . 因此使用Eureka注册中心 ;

在注册中心会记录服务名称,ip地址以及端口, 服务每隔30S会向eureka发心跳;

  1. EurekaServer : 注册中心 , 记录服务信息 , 监控心跳;
  2. EurekaClient : 客户端 , 服务提供方和消防方 , 即具体的微服务 , 这个微服务也可以是eureka自己;

在搭建之前先给出工程目录

Spring Cloud微服务技术之Eureka注册中心配置前言一、Eureka注册中心基本原理二、Eureka服务注册与发现

二、Eureka服务注册与发现

1.引入父工程依赖

<dependencyManagement>
        <dependencies>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--nacos的管理依赖-->
            <!--spring-cloud-alibaba依赖全部引入-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
           

2.向需要注册的微服务中引入Eureka依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
           

3.编写配置

这里的

eureka:

处于yml文件的根目录

eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka
           

同时指定服务名称 , 以user-service为例

spring:
	application:
    	name: userservice
           

在Eureka微服务的启动类上配置一个

@EnableEurekaServer

注解 , 即可开启微服务

这里的2,3点 , 在每个微服务中都要配置一份

打开浏览器 , 地址栏输入

http://localhost:10086/

即可进入Eureka管理界面

4. 同一服务配置多个实例

将目标服务的configuration复制多份 , 然后修改端口号即可

综上所述 , Eureka服务注册分两步 : 1. 引入eureka-client依赖 , 在application.yml中配置eureka地址和指定服务名称

下面讲讲服务的发现 , 也就是 不同微服务之间的相互调用

5. 服务发现

  1. 引入依赖
  2. yml配置eureka的地址
  3. 在启动类上给RestTemplate添加

    @LoadBalabced

    注解
/**
     * 创建RestTemplate并注入Spring容器,同时启动负载均衡
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
           
  1. 使用服务提供者的服务名称远程调用
public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2.利用RestTemplate发起http请求,查询用户
        // 2.1.url路径
        String url = "http://userservice/user/" + order.getUserId(); //这里会调用所有userserver的服务
        // 2.2.发送http请求,实现远程调用
        User user = restTemplate.getForObject(url, User.class);
        // 3.封装user到Order
        order.setUser(user);
        // 4.返回
        return order;
    }