【Eureka】服務端和客戶端


【Eureka】服務端和客戶端

轉載:https://www.cnblogs.com/yangchongxing/p/10778357.html

Eureka服務端

1、添加依賴

<?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.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>ycx</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <!-- spring boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- spring cloud -->
 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>

        <!-- other -->
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2、啟用Eureka服務

package ycx.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

}

3、配置Eureka

spring:
  application:
    name: eureka-server
server:
  port: 8761
eureka:
  instance:
    prefer-ip-address: true
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      default-zone: http://eureka.ycx.com:8761/eureka

Eureka客戶端

1、添加依賴

<?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.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>ycx</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <artifactId>admin-server</artifactId>
    <name>admin-server</name>
    <description>sc server</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <!-- spring boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>


        <!-- spring cloud -->
 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>

        <!-- other -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2、啟用服務發現,僅僅 Eureka 使用 @EnableEurekaClient,其他的服務發現代理使用 @EnableDiscoveryClient

package ycx.admin;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableEurekaClient
@SpringBootApplication
public class AdminServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(AdminServerApplication.class, args);
    }

}

3、配置服務發現

spring:
  application:
    name: admin-server
server:
  port: 0
eureka:
  instance:
    prefer-ip-address: true
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      default-zone: http://eureka.ycx.com:8761/eureka

配置信息,參考:https://www.cnblogs.com/tiancai/p/9593648.html

 

Eureka Instance配置信息
全部保存在org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean配置類里,實際上它是com.netflix.appinfo.EurekaInstanceConfig的實現類,替代了netflix的com.netflix.appinfo.CloudInstanceConfig的默認實現。

appname = unknown
應用名,首先獲取spring.application.name的值,如果取值為空,則取默認unknown。

appGroupName = null
應用組名

instanceEnabledOnit = false
實例注冊到Eureka上是,是否立刻開啟通訊。有時候應用在准備好服務之前需要一些預處理。

nonSecurePort = 80
非安全的端口

securePort = 443
安全端口

nonSecurePortEnabled = true
是否開啟非安全端口通訊

securePortEnabled = false
是否開啟安全端口通訊

leaseRenewalIntervalInSeconds = 30
實例續約間隔時間

leaseExpirationDurationInSeconds = 90
實例超時時間,表示最大leaseExpirationDurationInSeconds秒后沒有續約,Server就認為他不可用了,隨之就會將其剔除。

virtualHostName = unknown
虛擬主機名,首先獲取spring.application.name的值,如果取值為空,則取默認unknown。

instanceId
注冊到eureka上的唯一實例ID,不能與相同appname的其他實例重復。

secureVirtualHostName = unknown
安全虛擬主機名,首先獲取spring.application.name的值,如果取值為空,則取默認unknown。

metadataMap = new HashMap();
實例元數據,可以供其他實例使用。比如spring-boot-admin在監控時,獲取實例的上下文和端口。

dataCenterInfo = new MyDataCenterInfo(DataCenterInfo.Name.MyOwn);
實例部署的數據中心。如AWS、MyOwn。

ipAddress=null
實例的IP地址

statusPageUrlPath = "/actuator/info"
實例狀態頁相對url

statusPageUrl = null
實例狀態頁絕對URL

homePageUrlPath = "/"
實例主頁相對URL

homePageUrl = null
實例主頁絕對URL

healthCheckUrlUrlPath = "/actuator/health"
實例健康檢查相對URL

healthCheckUrl = null
實例健康檢查絕對URL

secureHealthCheckUrl = null
實例安全的健康檢查絕對URL

namespace = "eureka"
配置屬性的命名空間(Spring Cloud中被忽略)

hostname = null
主機名,不配置的時候講根據操作系統的主機名來獲取

preferIpAddress = false
是否優先使用IP地址作為主機名的標識

Eureka Client客戶配置信息
配置全部在org.springframework.cloud.netflix.eureka.EurekaClientConfigBean中,實際上它是com.netflix.discovery.EurekaClientConfig的實現類,替代了netxflix的默認實現。

enabled=true
是否啟用Eureka client。

registryFetchIntervalSeconds=30
定時從Eureka Server拉取服務注冊信息的間隔時間

instanceInfoReplicationIntervalSeconds=30
定時將實例信息(如果變化了)復制到Eureka Server的間隔時間。(InstanceInfoReplicator線程)

initialInstanceInfoReplicationIntervalSeconds=40
首次將實例信息復制到Eureka Server的延遲時間。(InstanceInfoReplicator線程)

eurekaServiceUrlPollIntervalSeconds=300
拉取Eureka Server地址的間隔時間(Eureka Server有可能增減)

proxyPort=null
Eureka Server的代理端口

proxyHost=null
Eureka Server的代理主機名

proxyUserName=null
Eureka Server的代理用戶名

proxyPassword=null
Eureka Server的代理密碼

eurekaServerReadTimeoutSeconds=8
從Eureka Server讀取信息的超時時間

eurekaServerConnectTimeoutSeconds=5
連接Eureka Server的超時時間

backupRegistryImpl=null
Eureka Client第一次啟動時獲取服務注冊信息的調用的回溯實現。Eureka Client啟動時首次會檢查有沒有BackupRegistry的實現類,如果有實現類,則優先從這個實現類里獲取服務注冊信息。

eurekaServerTotalConnections=200
Eureka client連接Eureka Server的鏈接總數

eurekaServerTotalConnectionsPerHost=50
Eureka client連接單台Eureka Server的鏈接總數

eurekaServerURLContext=null
當Eureka server的列表在DNS中時,Eureka Server的上下文路徑。如http://xxxx/eureka。

eurekaServerPort=null
當Eureka server的列表在DNS中時,Eureka Server的端口。

eurekaServerDNSName=null
當Eureka server的列表在DNS中時,且要通過DNSName獲取Eureka Server列表時,DNS名字。

region="us-east-1"
實例所屬區域。

eurekaConnectionIdleTimeoutSeconds = 30
Eureka Client和Eureka Server之間的Http連接的空閑超時時間。

heartbeatExecutorThreadPoolSize=2
心跳(續約)執行器線程池大小。

heartbeatExecutorExponentialBackOffBound=10
心跳執行器在續約過程中超時后的再次執行續約的最大延遲倍數。默認最大延遲時間=10 * eureka.instance.leaseRenewalIntervalInSeconds

cacheRefreshExecutorThreadPoolSize=2
cacheRefreshExecutord的線程池大小(獲取注冊信息)

cacheRefreshExecutorExponentialBackOffBound=10
cacheRefreshExecutord的再次執行的最大延遲倍數。默認最大延遲時間=10 *eureka.client.registryFetchIntervalSeconds

serviceUrl= new HashMap();serviceUrl.put(DEFAULT_ZONE, DEFAULT_URL);
Eureka Server的分區地址。默認添加了一個defualtZone。也就是最常用的配置eureka.client.service-url.defaultZone=xxx

registerWithEureka=true
是否注冊到Eureka Server。

preferSameZoneEureka=true
是否使用相同Zone下的Eureka server。

logDeltaDiff=false
是否記錄Eureka Server和Eureka Client之間注冊信息的差異

disableDelta=false
是否開啟增量同步注冊信息。

fetchRemoteRegionsRegistry=null
獲取注冊服務的遠程地區,以逗號隔開。

availabilityZones=new HashMap()
可用分區列表。用逗號隔開。

filterOnlyUpInstances = true
是否只拉取UP狀態的實例。

fetchRegistry=true
是否拉取注冊信息。

shouldUnregisterOnShutdown = true
是否在停止服務的時候向Eureka Server發起Cancel指令。

shouldEnforceRegistrationAtInit = false
是否在初始化過程中注冊服務。

Eureka Server注冊中心配置信息
Eureka Server注冊中心端的配置是對注冊中心的特性配置。Eureka Server的配置全部在org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean里,實際上它是com.netflix.eureka.EurekaServerConfig的實現類,替代了netflix的默認實現。

enableSelfPreservation=true
是否開啟自我保護

renewalPercentThreshold = 0.85
自我保護續約百分比閥值因子。如果實際續約數小於續約數閥值,則開啟自我保護

renewalThresholdUpdateIntervalMs = 15 * 60 * 1000
續約數閥值更新頻率。

peerEurekaNodesUpdateIntervalMs = 10 * 60 * 1000
Eureka Server節點更新頻率。

enableReplicatedRequestCompression = false
是否啟用復制請求壓縮。

waitTimeInMsWhenSyncEmpty=5 * 60 * 1000
當從其他節點同步實例信息為空時等待的時間。

peerNodeConnectTimeoutMs=200
節點間連接的超時時間。

peerNodeReadTimeoutMs=200
節點間讀取信息的超時時間。

peerNodeTotalConnections=1000
節點間連接總數。

peerNodeTotalConnectionsPerHost = 500;
單個節點間連接總數。

peerNodeConnectionIdleTimeoutSeconds = 30;
節點間連接空閑超時時間。

retentionTimeInMSInDeltaQueue = 3 * MINUTES;
增量隊列的緩存時間。

deltaRetentionTimerIntervalInMs = 30 * 1000;
清理增量隊列中過期的頻率。

evictionIntervalTimerInMs = 60 * 1000;
剔除任務頻率。

responseCacheAutoExpirationInSeconds = 180;
注冊列表緩存超時時間(當注冊列表沒有變化時)

responseCacheUpdateIntervalMs = 30 * 1000;
注冊列表緩存更新頻率。

useReadOnlyResponseCache = true;
是否開啟注冊列表的二級緩存。

disableDelta=false。
是否為client提供增量信息。

maxThreadsForStatusReplication = 1;
狀態同步的最大線程數。

maxElementsInStatusReplicationPool = 10000;
狀態同步隊列的最大容量。

syncWhenTimestampDiffers = true;
當時間差異時是否同步。

registrySyncRetries = 0;
注冊信息同步重試次數。

registrySyncRetryWaitMs = 30 * 1000;
注冊信息同步重試期間的時間間隔。

maxElementsInPeerReplicationPool = 10000;
節點間同步事件的最大容量。

minThreadsForPeerReplication = 5;
節點間同步的最小線程數。

maxThreadsForPeerReplication = 20;
節點間同步的最大線程數。

maxTimeForReplication = 30000;
節點間同步的最大時間,單位為毫秒。

disableDeltaForRemoteRegions = false;
是否啟用遠程區域增量。

remoteRegionConnectTimeoutMs = 1000;
遠程區域連接超時時間。

remoteRegionReadTimeoutMs = 1000;
遠程區域讀取超時時間。

remoteRegionTotalConnections = 1000;
遠程區域最大連接數

remoteRegionTotalConnectionsPerHost = 500;
遠程區域單機連接數

remoteRegionConnectionIdleTimeoutSeconds = 30;
遠程區域連接空閑超時時間。

remoteRegionRegistryFetchInterval = 30;
遠程區域注冊信息拉取頻率。

remoteRegionFetchThreadPoolSize = 20;
遠程區域注冊信息線程數。

Eureka Server注冊中心儀表盤配置

path="/"
儀表盤訪問路徑

enabled=true
是否啟用儀表盤

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM