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长时间没有接收到微服务心跳启动了自动保护机制,暂时先不用去理会它。至此,我们的微服务就注册到注册中心上了,接下来我们将了解如何从注册中心获取微服务提供的接口。
上一篇: opencv学习(一)连通域分割及移动
推荐阅读
-
springCloud学习笔记一 注册中心搭建
-
SpringCloud学习笔记(一)服务注册
-
SpringCloud 学习笔记01 服务注册与发现
-
springcloud微服务体系(二)—2.0G版 Consul注册中心搭建
-
SpringCloud学习笔记(二):服务注册与发现Eureka
-
SpringCloud学习笔记(二)Eureka服务注册
-
SpringCloud学习笔记(二):建立注册中心,注册微服务
-
SpringCloud_2Eureka服务注册与发现学习笔记
-
SpringCloud学习笔记(1):Eureka注册中心
-
springCloud 学习第二篇——构建服务,并注册到eureka注册中心