【Eureka】服務端和客戶端html
轉載:http://www.javashuo.com/article/p-zumttylr-e.htmljava
Eureka服務端web
一、添加依賴spring
<?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>
二、啓用Eureka服務apache
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); } }
三、配置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客戶端安全
一、添加依賴app
<?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>
二、啓用服務發現,僅僅 Eureka 使用 @EnableEurekaClient,其餘的服務發現代理使用 @EnableDiscoveryClientmaven
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); } }
三、配置服務發現spring-boot
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
配置信息,參考:http://www.javashuo.com/article/p-gjewftpe-dn.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 是否啓用儀表盤