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

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

注册中心

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

建立注册中心

我们首先在IDEA中新建一个模块或者新建一个Maven项目,我这里是选择新建一个模块,先点击项目结构设置(Ctrl+Alt+Shift+S)
项目结构设置
接下来配置项目模块(Moudules),单击左上角的+号,选择New Moudule新建一个模块。
模块设置
模块依赖选择Maven,下一步,填写Maven项目信息
填写信息
点击下一步,修改一下项目的目录位置,不然会被放在第一个项目的目录下
修改目录位置
打开新模块下的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就可以看到如下图所示的注册中心页面了
注册中心
从图中我们可以看见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,就可以看到在列表下新增了一个微服务,我们的微服务在注册中心上注册成功了。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值