欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringCloud学习笔记(二):建立注册中心,注册微服务

程序员文章站 2022-07-12 23:22:34
...

SpringCloud学习笔记(二):建立注册中心,注册微服务

注册中心

上一篇文章中我们新建了一个简单的微服务工程,在一个常规的项目中,会有十几个甚至更多的这样的微服务来构成一个完整的系统,微服务之间通过接口互相传递数据。那么,按照往常的思维,微服务之间的接口URL只能通过硬编码的方式来写进代码里了,这样显然大大增加了代码的维护难度,一个接口的地址、参数产生了变化,可能会影响到多个微服务对其的调用,这时SpringCloud带着eureka组件应运而生了,SpringCloud首先要解决的,就是这个URL的问题。每个微服务都将在eureka上注册,eureka将分配一个微服务ID给每一个微服务,这个微服务ID在eureka体系中可以实现替代URL中主机名的作用。

建立注册中心

我们首先在IDEA中新建一个模块或者新建一个Maven项目,我这里是选择新建一个模块,先点击项目结构设置(Ctrl+Alt+Shift+S)
SpringCloud学习笔记(二):建立注册中心,注册微服务
接下来配置项目模块(Moudules),单击左上角的+号,选择New Moudule新建一个模块。
SpringCloud学习笔记(二):建立注册中心,注册微服务
模块依赖选择Maven,下一步,填写Maven项目信息
SpringCloud学习笔记(二):建立注册中心,注册微服务
点击下一步,修改一下项目的目录位置,不然会被放在第一个项目的目录下
SpringCloud学习笔记(二):建立注册中心,注册微服务
打开新模块下的pom.xml,在其中加入如下代码:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
    </parent>
    <dependencyManagement>
        <dependencies>
            <!-- 导入Spring Cloud的依赖管理 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!--springboot 整合eureka服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

eureka注册中心自身也是一个微服务,是基于SpringBoot的,因此我们同样需要编写启动类,以启动eureka服务。在java文件夹下新建runner包,在包下面新建一个eurekaApp类,代码如下:

package runner;

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

@SpringBootApplication
@EnableEurekaServer //声明这是一个Eureka服务
public class eurekaApp {

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

最后在resource文件夹下,新建一个application.yml,配置一下SpringBoot需要的参数以及eureka需要的参数,注册中心就可以启动了,代码如下:

#服务端口号
server:
  port: 9090

#服务名称
spring:
  application:
    name: app-eureka-center

eureka:
  instance:
    #注册中心地址
    hostname: localhost

#客户端调用地址
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    #是否将自己注册到Eureka服务中
    register-with-eureka: false
    #是否从Eureka中获取注册信息
    fetch-registry: false

设置完这些参数以后就可以运行启动类中的入口方法了,等待项目加载完成,在浏览器中访问localhost:9090就可以看到如下图所示的注册中心页面了
SpringCloud学习笔记(二):建立注册中心,注册微服务
从图中我们可以看见Instances currently registered with Eureka下面的表格还没有数据,这是因为我们还没有任何的服务被注册到Eureka中,接下来我们要做的就是注册一个微服务到注册中心。

注册微服务

把微服务注册到注册中心是非常简单的一件事情,我们只需要在原先的微服务模块中新增一个依赖,yml文件中添加几行配置,然后在启动类上加一个注解就可以实现将微服务注册到注册中心了。

首先我们先打开上一个模块(microservicefirst)的pom.xml,在依赖中新增下面这个依赖:

<!--springboot 整合eureka客户端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.0.2.RELEASE</version>
</dependency>

然后打开resource目录下的application.yml文件,在底下新增如下几行配置

#服务注册到eureka注册中心的地址
eureka:
  instance:
    instance-id: ${spring.application.name}###${server.port} #指定实例id
  client:
    service-url:
    #注册中心地址
      defaultZone: http://localhost:9090/eureka/
#需要注册到注册中心
    register-with-eureka: true
#是否需要从eureka上检索服务
    fetch-registry: false

最后修改runner启动类上的注解,新增在类上新增一行注解:

@EnableEurekaClient//启动Eureka客户端,标记这个服务是Eureka的客户端服务

启动这个微服务模块,等待模块启动完成之后再次访问localhost:9090,就可以看到在列表下新增了一个微服务,我们的微服务在注册中心上注册成功了。

SpringCloud学习笔记(二):建立注册中心,注册微服务
上面那一大串红字是由于Eureka长时间没有接收到微服务心跳启动了自动保护机制,暂时先不用去理会它。至此,我们的微服务就注册到注册中心上了,接下来我们将了解如何从注册中心获取微服务提供的接口。