SpringCloud学习之路(二) 服务的发现 Eureka(Finchley版本)
前言:上一章我们已经讲了注册中心,这节我们继续讲服务的发现。
继续在项目上再新建一个子项目(module)eureka-client。如下图
然后配置文件(pom.xml)如下:
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.scfhy</groupId>
<artifactId>eureka-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-client</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>com.scfhy</groupId>
<artifactId>sc-f-finchley</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
注意:记得在父类的pom.xml里面添加eureka-client
然后再启动类上加上注解**@EnableEurekaClient**表明自己是一个eurekaclient.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
在配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下
server:
port: 8083
spring:
application:
name: service-client
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8082/eureka/
需要指明spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。
启动这个工程。
然后打开注册中心。http://localhost:8082 你会发现有一个服务了。如下图
到这里我们的服务注册和发现就大概完成了。
下面我们来处理一些小细节。作为程序员。我们要追求完美。哈哈
在服务的页面。我们会发现以下问题。如下图:
鼠标放在服务名字上时 发现下面的那个显示时http://localhost/ 如果以后服务多了。我们无法区分到底时那个服务的。到底时那台机器的。所以我们要完善一些。需要把这个localhost 变成ip。
怎么实现呢。只需要在配置文件(application.yml)里添加如下配置即可
server:
port: 8083
spring:
application:
name: service-client
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8082/eureka/
instance:
instance-id: service-client-8083
prefer-ip-address: true #访问路径可以显示IP地址
instance:
instance-id: service-client-8083
prefer-ip-address: true
添加这个即可。
添加好了之后。重新启动。然后即可解决这个问题。
还有一个细节问题。 如果点击服务名字的时候。他会跳到一个页面。然后这个页面还是404
对应404我无法忍受。
如下图
解决办法
在pom.xml 里面添加如下配置文件 导入下面的jar包
<!-- actuator监控信息完善 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
然后再application.yml里面添加下面的代码。如下图
server:
port: 8083
spring:
application:
name: service-client
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8082/eureka/
instance:
instance-id: service-client-8083
prefer-ip-address: true #访问路径可以显示IP地址
info:
app.name: com.scfhy
company.name: www.baidu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
然后重新启动。然后再点击那个服务名称。会看到如下的界面了。
好了 到这里服务的注册和发现就基本完成了。 有问题的请留言。感觉观看。一起学习一起成长。