SpringCloud实战---第六篇:Eureka注册中心之服务注册

举报
老司机张师傅 发表于 2022/07/26 23:21:00 2022/07/26
【摘要】 前言 说起来容易做起来难,一步一步都干完!!! 学习一定要自己动手搞一搞,不能只眼会。 学习笔记是跟着尚硅谷的视频学的:https://www.bilibili.com/video/BV18E411x7eT?p=1 场景大纲我们以这样一个场景来学习、构建我们的微服务 服务注册中心Eureka 1. 概念Eureka是cloud提供的服务治理框架,实现服务的统一调用和管理,当微服务接口数量上...

前言

说起来容易做起来难,一步一步都干完!!!

学习一定要自己动手搞一搞,不能只眼会。

学习笔记是跟着尚硅谷的视频学的:https://www.bilibili.com/video/BV18E411x7eT?p=1


场景大纲

我们以这样一个场景来学习、构建我们的微服务
在这里插入图片描述

服务注册中心Eureka

1. 概念

Eureka是cloud提供的服务治理框架,实现服务的统一调用和管理,当微服务接口数量上来之后使用传统的RestTemplate的方式调用会十分不便,也不便于我们统一的管理和监控,引入Eureka框架可以实现服务统一的发布和管理,Eureka包含Server和Client两个组件。
EurekaServer就是注册中心,服务向注册中心注册后,可以被其他使用方发现调用。EurekaClient就是服务提供方,服务可以将自己注册到注册中心EurekaServer。
在这里插入图片描述

  • EurekaServer提供注册服务

各个微服务节点通过配置启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中会存储所有可用服务节点的信息,可以通过web页面看到。

  • EurekaClient向注册中心注册自己提供的服务信息
    是一个Java客户端,用于简化EurekaServer的交互,客户端同时也具备一个内置的、使用轮询负载均衡算法的负载均衡器,在应用启动后,会向EurekaServer发送心跳(默认30秒),如果server多个周期没有接收到某个节点的心跳,Server会从注册表中会把这个服务节点移除(默认90秒)。

单机版Eureka构建

注册中心EurekaServer端口7001,服务调用者端口80,服务提供者端口8001
在这里插入图片描述

1. 创建EurekaServer模块7001

  1. 创建模块,模块名
cloud-eureka-server7001
  1. 修改POM,添加依赖(注意:等待下载完依赖)
   <dependencies>
        <!--eureka-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--boot web actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般通用配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>
  1. 添加application.yml配置文件,注意,由于7001是注册中心,所以不需要自己向自己注册
server:
  port: 7001
eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称
  client:
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
    #集群指向其它eureka
      #defaultZone: http://eureka7002.com:7002/eureka/
    #单机就是7001自己
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  1. 在java下建立包
com.atguigu.springcloud

在这里插入图片描述

  1. 编写启动类,@EnableEurekaServer注解表示该启动类类是EurekaServer的注册中心服务(自己不用向自己注册)
package com.atguigu.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Author: Daisen.Z
 * @Date: 2021/12/17 18:00
 * @Version: 1.0
 * @Description:
 */
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain7001 {

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

}
  1. 创建完成
    在这里插入图片描述
  2. 启动测试
    在这里插入图片描述
    访问 localhost:7001,能看到Eureka的web页面,创建完成
    在这里插入图片描述

2. 改造EurekaClient服务提供方8001

  1. 添加EurekaClient的依赖。
<!--eureka-client-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

在这里插入图片描述

  1. 添加服务名称配置
    向Eureka注册自身服务,需要告知注册中心本服务的名称, 这个名称在application.yml里面配置,之前我们添加配置时已经添加该项。
    在这里插入图片描述
  2. 添加EurekaClient配置
eureka:
  client:
    register-with-eureka: true     #false表示不向注册中心注册自己。
    fetch-registry: true     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #表示Eureka的地址
      defaultZone: http://localhost:7001/eureka/

在这里插入图片描述

  1. 修改启动类,改为添加EurekaClient标识注解
@EnableEurekaClient

在这里插入图片描述

  1. 启动测试

在这里插入图片描述
访问页面

http://localhost:7001/

cloud-payment-service已经注册进来,其中服务名字是我们配置文件中配的,转成了大写显示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 改造EurekaClient服务提供方80

  1. 添加EurekaClient的依赖。
<!--eureka-client-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

在这里插入图片描述

  1. 修改80的配置文件,添加如下配置,注意首行缩进要保持一直
spring:
  application:
    name: cloud-order-service # 本服务的名称

eureka:
  client:
    register-with-eureka: true     #false表示不向注册中心注册自己。
    fetch-registry: true     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #表示Eureka的地址
      defaultZone: http://localhost:7001/eureka/

在这里插入图片描述

  1. 修改启动类,改为添加EurekaClient标识注解

在这里插入图片描述
order服务也注册进来了
在这里插入图片描述

  1. 只调用服务可以不将自己注册到注册中心上,通过修改配置文件可以更正,修改register-with-eureka配置,ctrl+s让热部署自动重启。

在这里插入图片描述
刷新页面,order服务消失啦
在这里插入图片描述


小结

  • Eureka包含Server和Client两个组件。

  • EurekaServer就是注册中心,服务向注册中心注册后,可以被其他使用方发现调用。

  • EurekaClient就是服务提供方和服务调用方,服务可以将自己注册到注册中心。

  • 改register-with-eureka配置控制是否将自身注册到Eureka。

  • EurelkaServer端要给启动类添加@EnableEurekaServer注解。

  • EurekaClient端要给启动类添加@EnableEurekaClient注解。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。