第2章 Eureka微服務搭建
1. Eureka微服務搭建
1.1 Eureka介紹
1.1.1 Eureka是什麼?
Eureka是基於REST服務,主要以AWS雲服務爲支撐,提供服務發現並實現負載均衡和故障轉移,功能類似於Dubbo的註冊中心Zookeeper,所以在 Spring Cloud微服務架構中通常用作註冊中心。我們稱這個服務爲 Eureka Server還有一個與之交互的客戶端稱之爲 Eureka Client
1.1.2 Eureka實現原理
Eureka採用C-S的設計架構,即包括了Eureka Server(服務端),Eureka client(客戶端)
- Eureka Server提供服務註冊,在各個節點啓動後,會在Eureka Server中進行註冊
- Eureka Client是一個Java客戶端,用於和服務端進行交互,同時客戶端也是一個內置的默認使用輪詢負載均衡算法的負載均衡器。在應用啓動後會向Eureka Server發送心跳(默認30秒)。如果Eureka Server在多個心跳週期內沒有接受到某個節點的心跳,Eureka Server將會從服務註冊表中將這個服務移出(默認90秒)。
- 服務發現有兩種模式:一種是客戶端發現模式,一種是服務端發現模式。Eureka採用的是客戶端發現模式
1.2 Eureka微服務搭建
1.2.1 pom.xml配置
創建模塊thankson-springcloud-eureka
並修改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">
<parent>
<artifactId>changgou</artifactId>
<groupId>com.thankson.springcloud</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>thankson-springcloud-eureka</artifactId>
<packaging>jar</packaging>
<description>註冊中心</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
1.2.2 appliation.yml配置
在resources目錄下創建配置文件application.yml
server:
port: 8761
spring:
application:
name: eureka
eureka:
instance:
#設置當前實例的主機名稱
hostname: localhost
#定義服務失效的時間,單位:秒
lease-expiration-duration-in-seconds: 20
#定義服務續約任務(心跳)的調用間隔,單位:秒
lease-renewal-interval-in-seconds: 10
#不使用主機名來定義註冊中心的地址,而使用IP地址的形式,如果設置了屬性,則使用該屬性配置的IP,否則自動獲取除環路IP外的第一個IP地址
prefer-ip-address: false
instance-id: ${spring.cloud.client.ip-address}:${server.port}
#IP地址
ip-address: localhost
#狀態頁面的URL,相對路徑,默認使用 HTTP 訪問,如果需要使用 HTTPS則需要使用絕對路徑配置
status-page-url-path: /info
#健康檢查頁面的URL,相對路徑,默認使用 HTTP 訪問,如果需要使用 HTTPS則需要使用絕對路徑配置
health-check-url-path: /health
#健康檢查頁面的URL,絕對路徑
health-check-url: /
client:
#是否註冊爲服務 服務端必配,禁止自生註冊
register-with-eureka: false
#是否檢索服務 服務端必配,表示自己就是註冊中心,不需要去檢索服務
fetch-registry: false
#eureka默認空間的地址
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
healthcheck:
enabled: true
registry-fetch-interval-seconds: 5
server:
#關閉自我保護(生產時打開該選項) 關閉註冊中心的保護機制,Eureka 會統計15分鐘之內心跳失敗的比例低於85%將會觸發保護機制,不剔除服務提供者,如果關閉服務註冊中心將不可用的實例正確剔除
enable-self-preservation: false
#掃描失效服務的間隔時間(缺省爲60*1000ms)
eviction-interval-timer-in-ms: 10000
1.2.3 添加啓動類
在com.thankson.springcloud.eureka
文件夾下創建EurekaApplication.java
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
1.2.4 測試
啓動EurekaApplication.java,訪問鏈接http://localhost:8761
2. common模塊搭建
以thankson-springcloud-common
爲父工程創建出thankson-springcloud-common-util
、thankson-springcloud-common-component
兩個模塊。
2.1 功能介紹
common模塊結構如下:
thankson-springcloud-common-util
工具類公共模塊 包含DateUtils、RandomUtils、ReflectionUtil、DateUtils等
thankson-springcloud-common-component
組件公共模塊:主要包括canal、redis、rabbitMQ等
2.2 util模塊
在src/main/java目錄下創建文件夾 com.thankson.common.util
,並添加需要用到的工具類
2.3 component模塊
在src/main/java目錄下創建文件夾 com.thankson.common.component
,並添加需要用到的工具類
3. 結束語
至此,eureka與common模塊已開發完畢。