[toc]java
前言
前面說到,要用微服務, 就要解決微服務的幾個核心問題 具體可看第一篇文章。這篇文章是學習使用Spring Cloud Netflix 的 Eureka 組件。經過這個組件,咱們能夠建立一個服務的註冊與發現中心服務來管理咱們服務。這是解決以後的其餘問題的基礎。只有全部的服務都註冊到註冊中心中, 纔有利於作後續的服務間調用和服務監控等。git
建立統一的依賴管理項目
爲何要建立依賴管理項目?
在建立服務註冊中心的項目前, 咱們先建立一個依賴管理項目。爲何要有依賴管理項目?github
spring-boot-starter-parent
這個依賴能夠看到它的父pom就是一個依賴管理項目(spring-boot-dependencies
)建立項目
建立一個目錄名爲hello-spring-cloud-dependencies
, 新建pom文件,內容以下:web
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<groupId>com.domain</groupId>
<artifactId>hello-spring-cloud-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>hello-spring-cloud-dependencies</name>
<url>http://www.baidu.com</url>
<inceptionYear>2018-Now</inceptionYear>
<properties>
<!-- Environment Settings -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Spring Settings -->
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
<spring-boot-admin.version>2.0.1</spring-boot-admin.version>
<zipkin.version>2.10.1</zipkin.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring Cloud Begin 微服務框架-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud End -->
<!-- Spring Boot Admin Begin 用來管理和監控spring boot 應用程序-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<!-- Spring Boot Admin End -->
<!-- ZipKin Begin 鏈路追蹤系統-->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin</artifactId>
<version>${zipkin.version}</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>${zipkin.version}</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>${zipkin.version}</version>
</dependency>
<!-- ZipKin End -->
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<!-- 資源文件配置 -->
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</project>
複製代碼
大體說下pom文件內容意思, parent 繼承spring-boot-starter-parent
表示這是一個spring boot
項目,而後聲明瞭,項目的組織,項目名版本等。而後在dependencyManagement
節點聲明瞭 一些依賴, 這些依賴因爲聲明在dependencyManagement
節點中, 因此並真實依賴進本項目或者是子項目,只是起了一個聲明做用。 若是須要真實依賴使用, 須要在使用地方再次聲明一次,此次聲明不帶版本。能夠看出, 咱們這個依賴管理項目, 只是把依賴抽取到這個地方統一管理而已。若是實在看不懂pom文件內容的,建議去補maven知識。spring
建立服務註冊中心項目
依賴管理項目建立好了, 如今要作的建立一個服務註冊中心項目繼承它。pom內容以下:apache
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.domain</groupId>
<artifactId>hello-spring-cloud-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../hello-spring-cloud-dependencies/pom.xml</relativePath>
</parent>
<artifactId>hello-spring-cloud-eureka</artifactId>
<packaging>jar</packaging>
<name>hello-spring-cloud-eureka</name>
<url>http://www.baidu.com</url>
<inceptionYear>2018-Now</inceptionYear>
<dependencies>
<!-- Spring Boot Begin -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring Boot End -->
<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>
<configuration>
<mainClass>com.domain.hello.spring.cloud.eureka.EurekaApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
複製代碼
**內容說明:**這裏就兩個依賴, 一個是spring boot測試包依賴, 一個是eureka
依賴, 這個就是Spring cloud 提供的服務註冊與發現組件, 當咱們微服務中的各個服務啓動後, 會自動註冊到這個註冊中心, 方便咱們對各個服務管理、使用。bash
eureka配置
配置文件內容以下:服務器
spring:
application:
name: hello-spring-cloud-eureka
server:
port: 8881
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
複製代碼
內容說明: 前面是配置咱們服務的名稱,端口。eureka 這個節點下面是eureka的相關配置,hostname是咱們服務器地址, client的兩個屬性是配置是否客戶端, 這裏寫false,表示這是eureka的服務端。其餘服務要做爲客戶端來註冊到咱們這個服務端。defaultZone 是eureka的地址。客戶端就是經過這個地址來註冊到咱們 eureka的服務端。app
服務查看頁面
當服務註冊到eureka後, 咱們能夠經過一個web 頁面來查看。啓動服務後,訪問服務地址。 框架
頁面中紅色框選的地方會顯示當前全部註冊到eureka的服務。不過當前尚未服務註冊上去。等下一篇文章節說服務提供者的, 咱們把服務註冊上去,就能看見了。
完整代碼
完整代碼在這裏: github.com/domain9065/…
全部文章目錄及說明
有關文章的說明和目錄都在這裏了:juejin.im/post/5dbadf…