「Spring Cloud Eureka 入門系列」
Spring Cloud Eureka 入門 (一)服務注冊中心詳解
Spring Cloud Eureka 入門 (二)服務提供者詳解
Spring Cloud Eureka 入門 (三)服務消費者詳解
本文提綱
- Eureka 服務治理
1.1 什么是 Eureka
1.2 Eureka 集群架構 - 運行 Eureka 工程 springcloud-eureka-server
- 詳解 Eureka 工程 springcloud-eureka-server
一、Eureka 服務治理
1.1 什么是 Eureka
Eureka,這里是 Spring Cloud Eureka 的簡稱,是 Spring Cloud Netflix 組件之一,Spring Cloud Netflix 中核心的組件包括了服務治理(Eureka),服務容斷(Hystrix),路由(Zuul)和客戶端負載均衡(Ribbon),在系列第三篇,服務消費者講解會涉及到 Ribbon 的使用,
回到 Spring Cloud Eureka,是基于 Netflix Eureka (Netflix 是 Java 實作的開源軟體),服務治理(Eureka)包括服務注冊、服務發現和服務檢測監控等,自然本文介紹下 Eureka 作為服務注冊中心,
1.2 Eureka 架構
Eureka 作為服務治理,必然滿足下面幾點:
- 服務本身不存在單點故障,
- 支持集群,即高可用性
- 服務與服務之間通過服務注冊中心找到彼此實體
作為服務端(即服務注冊中心),包括
- 管理服務實體
- 提供服務注冊或下線
- 提供服務發現
- 提供服務注冊表至兩類客戶端(即服務提供者和消費者)
作為客戶端(即服務提供者和消費者),包括
- 連接服務注冊中心
- 向服務注冊中心注冊或者下線服務實體
- 向服務注冊中心或服務注冊快取串列查詢服務
二、運行 Eureka 工程 springcloud-eureka-server
運行環境:JDK 7 或 8,Maven 3.0+
技術堆疊:Spring Cloud Dalston.SR1、 spring-cloud-netflix 1.3.1、Spring Boot 1.5.4
-
git clone 下載工程 springcloud-learning-example
專案地址見 GitHub - https://github.com/JeffLi1993/springcloud-learning-example:
git clone https://github.com/JeffLi1993/springcloud-learning-example.git -
Maven 編譯安裝這個工程:
cd springcloud-learning-example
mvn clean install -
運行 springcloud-eureka-server Eureka 工程
右鍵 Main 函式 Run Eureka Server 啟動類 EurekaServerApplication,啟動服務注冊中心工程,
EurekaServerApplication 類地址:/springcloud-learning-example/springcloud-eureka-sample/springcloud-eureka-server/src/main/java/org/spring/springboot/EurekaServerApplication.java
控制臺 Console 看到這類資訊,代表啟動成功:
2017-06-30 10:32:47.549 INFO 2977 --- [ Thread-11] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2017-06-30 10:32:47.625 INFO 2977 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8888 (http)
2017-06-30 10:32:47.626 INFO 2977 --- [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8888
2017-06-30 10:32:47.632 INFO 2977 --- [ main] o.s.springboot.EurekaServerApplication : Started EurekaServerApplication in 23.168 seconds
- 訪問 Eureka 注冊中心可視化界面
打開瀏覽器,訪問 http://localhost:8888/
可以看到主體資訊包括:
- 系統狀態:環境、運行時間、更新時間等
- 注冊資訊:服務名、服務地址、服務狀態
- 基本資訊:環境、記憶體、副本資訊
- 實體資訊:IP、埠
三、詳解 Eureka 工程 springcloud-eureka-server
1.springcloud-eureka-server 工程目錄結構
├── pom.xml
└── src
└── main
├── java
│ └── org
│ └── spring
│ └── springcloud
│ ├── EurekaServerApplication.java
└── resources
└── application.yml
EurekaServerApplication.java Eureka Server 啟動類
application.yml 組態檔
- 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springcloud</groupId>
<artifactId>springcloud-eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud-eureka-server :: Spring Cloud Eureka 服務注冊中心</name>
<!-- Spring Boot 啟動父依賴 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<dependencies>
<!-- Spring Cloud Netflix Eureka Server 依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- Spring Boot Test 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- Spring Cloud Netflix 依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix</artifactId>
<version>1.3.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
使用的依賴是
- spring-cloud-netflix 1.3.1 是 Spring Cloud Dalston.SR1 版本,
- spring-cloud-starter-eureka-server Eureka Server 模塊依賴
上面提到的客戶端負載均衡 Ribbon ,可以依賴樹中看出 spring-cloud-starter-eureka-server 依賴了 Ribbon 相關的庫,因為一般 eureka 本身作為服務自注冊實作高可用,也可以作為客戶端呼叫其他服務,
- application.yml 配置
server:
port: 8888 # 服務埠
eureka:
instance:
hostname: localhost # 設定主機名
client:
registerWithEureka: false # 是否向 Eureka 注冊服務,該應用為服務注冊中心,不需要自注冊,設定為 false
fetchRegistry: false # 是否檢索服務,該應用為服務注冊中心,職責為注冊和發現服務,無需檢索服務,設定為 false
server:
waitTimeInMsWhenSyncEmpty: 0 # 設定同步為空時的等待時間,默認 5 * MINUTES
- server.port 設定工程服務埠
- eureka.instance.hostname Eureka 實體主機名
- eureka.client.registerWithEureka 是否向 Eureka 注冊服務,服務注冊中心服務,沒有作為集群,所以不需要自注冊,設定為 false
- eureka.client.fetchRegistry 是否檢索服務,該應用為服務注冊中心,職責為注冊和發現服務,無需檢索服務,設定為 false
- eureka.server.waitTimeInMsWhenSyncEmpty 設定同步為空時的等待時間,默認 5 * MINUTES
4.注冊中心應用啟動類
/**
* Spring Boot Eureka Server 應用啟動類
*
* Created by bysocket on 21/06/17.
*/
@EnableEurekaServer // Eureka Server 標識
@SpringBootApplication // Spring Boot 應用標識
public class EurekaServerApplication {
public static void main(String[] args) {
// 程式啟動入口
// 啟動嵌入式的 Tomcat 并初始化 Spring 環境及其各 Spring 組件
SpringApplication.run(EurekaServerApplication.class,args);
}
}
@EnableEurekaServer 標志該應用作為 Eureka Server ,并會自動化讀取相關配置,
四、小結
此小章節介紹了如何 Eureka 作為服務注冊中心 Server,下一小結講下 服務提供者詳解 具體是如何向服務注冊中心注冊自己的,系列目錄如下:
本文由博客群發一文多發等運營工具平臺 OpenWrite 發布
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/165384.html
標籤:其他
上一篇:IEEE浮點數標準
