2. 暢購商城之Eureka微服務搭建

第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-utilthankson-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模塊已開發完畢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章