上篇文章 Spring Cloud-01服务提供者与服务消费者 中,我们通过配置文件的方式来配置服务提供者的地址,有两个缺点
显然通过硬编码的方式无法满足上述的需求。
在微服务中,服务发现组件的位置如下
关系如上图
Spring Cloud支持Eureka 、Consul 、Zookeeper 等。
这里我们主要介绍的Eureka
Eureka是Netflix开源的服务发现组件,一个基于REST的服务。 包含Server和Client两部分。 Spring Cloud将它集成在子项目Spring Cloud Netflix中,从而实现微服务的注册与发现
https://github.com/Netflix/eureka
官网上的图 https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance
由上图可知,Eureka包含 Eureka Server和 Eureka Client
这一步不是必须的,这里我们为了方案管理依赖
首先我们将上篇博客中用到的provider和consumer中也放到父工程中去管理,简单说下操作步骤
更多的父子工程信息, 请参考 http://www.cnblogs.com/telwanggs/p/7016561.html
如何搭建也可以参考 https://blog.csdn.net/NancyWu_LuckyGirl/article/details/80244589
父工程的pom.xml 如下
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- http://www.cnblogs.com/telwanggs/p/7016561.html -->
<groupId>com.artisan</groupId>
<artifactId>microservice-spring-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>microservice-spring-cloud</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<modules>
<module>micorservice-provider-user</module>
<module>micorservice-consumer-movie</module>
<module>microservice-discovery-eureka</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
http://spring.io/projects/spring-cloud#overview
注意Spring boot 和 Spring Cloud的对应关系,否则启动可能会出错。
Finchley版本的官方指导手册: https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-eureka-server.html
在父工程 microservice-spring-cloud 上右键 New ,选择
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
package com.artisan.microservice.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String args[]) {
SpringApplication.run(EurekaApplication.class, args);
}
}
server:
port: 8761
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka
访问 http://localhost:8761/
Eureka Server 首页展示的信息包括 当前实例的系统状态、注册到Eureka Server的服务实例、常用信息、实例信息等 。
我们这里看到是空的
因为没有微服务注册上来,下面我们来看下如何将我们改造的用户微服务和电影微服务注册到Eureka Server上来吧。