1.Eureka 簡介; Eureka 是 Netflix 出品的用於實現服務註冊和發現的工具。 Spring Cloud 集成了 Eureka,並提供了開箱即用的支持。其中, Eureka 又可細分爲 Eureka Server 和 Eureka Client。 一、Eureka 是 Netflix 公司開發的服務發現框架,Spring Cloud 對它提供了支持,將它集成在了本身的 spring-cloud-netflix 子項目中。 二、Netflix 公司在 Github 上開源了不少項目,Eureka 只是其中一個,Netflix 開源主頁:https://github.com/Netflix 三、Netflix Eureka GitHub 開源地址:https://github.com/Netflix/eureka。AWS Service registry for resilient mid-tier load balancing and failover.(Eureka 是用於彈性中間層負載平衡和故障轉移的AWS服務註冊中心) 四、Eureka 是一種基於 REST(表現層狀態轉換) 的服務,主要用於 AWS(Amazon Web Services-亞馬遜web服務) 雲中定位服務,以實現中間層服務器的負載平衡和故障轉移。 五、The build requires java8 because of some required libraries that are java8 (servo), but the source and target compatibility are still set to 1.7.(構建 Eureka 項目須要 Java JDK 1.8以上版本,由於其中一些必須的庫使用了 Java8) 六、Netflix Eureka 官方文檔:https://github.com/Netflix/eureka/wiki,目前最新版是 2019年1月11更新的 V1.9.9。 七、Netflix Eureka 官網原來是 2.X 版本的,後面由於某些緣由中止了 2.X 版本的維護,可是 1.X 版本仍然活躍,仍在積極開發、維護、和使用;
2.Eureka基本特色; (1).服務啓動時會生成服務的基本信息對象InstanceInfo,而後在啓動時會register到服務治理中心。 (2).註冊完成後會從服務治理中心拉取全部的服務信息,緩存在本地。 (3).以後服務會被30s(可配置)發送一個心跳信息,續約服務。 (4).若是服務治理中心在90s內沒有收到一個服務的續約,就會認爲服務已經掛了,會把服務註冊信息刪掉。 (5).服務中止前,服務會主動發送一箇中止請求,服務治理中心會刪除這個服務的信息。 (6).若是Eureka Server收到的心跳包不足正常值的85%(可配置)就會進入自我保護模式,在這種模式下,Eureka Server不會刪除任何服務信息。
3.Eureka 原理
官網介紹地址: https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance
4.eureka linux 平臺服務管理開發腳本內容; #!/bin/bash #配置信息 CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd ) ####遠程腳本調自動獲取當前腳本路徑######## cd $CURDIR appName=eureka host=eureka1-dev.com port=8000 managementPort=${port} appPath="/chj/app/eureka/" cluster=http://eureka2-dev.com:8000/eureka,http://eureka3-dev.com:8000/eureka zone=${cluster} jar="eureka-k8s.jar" memory=512m ########################################################## #服務配置信息 logDir="/chj/data/log/${appName}" mkdir -p ${logDir} source ./script/fn.sh #環境變量信息文件### #函數信息 function fnstart() { nohup ${CMD} >> ${logDir}/console.log 2>&1 & processId=$! echo ${processId} > ${appPath}/pid echo "啓動完畢" echo "pid 爲 ${processId}" } function fnstop() { pidfile="/chj/app/eureka/pid" processId=$(cat ${pidfile}) echo "開始中止服務, pid 爲 : ${processId}" kill ${processId} true > ${pidfile} echo "中止完畢" } function fnrestart() { fnstop fnstart return True } function fstatus(){ process=$(cat ${appPath}/pid) if [[ -s ${appPath}/pid ]] then echo "True" else echo "flase" fi } ################################## case $1 in start) fnstart ;; stop) fnstop ;; restart) fnrestart ;; install) fninstall ;; status) fstatus esac cat ./script/fn.sh #!/bin/bash JAVA_OPS="-server -d64 -Xmx${memory} -Xms${memory} -verbose:gc" JAVA_OPS="${JAVA_OPS} -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps" JAVA_OPS="${JAVA_OPS} -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintCommandLineFlags -XX:+DisableExplicitGC" JAVA_OPS="${JAVA_OPS} -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -Xloggc:${logDir}/gc.log" JAVA_OPS="${JAVA_OPS} -Djava.security.egd=file:/dev/./urandom" JAVA_OPS="${JAVA_OPS} -DappName=${appName}" CMD="java ${JAVA_OPS} -Dhost=${host} -Dport=${port} -Dcluster=${cluster} -Dzone=${zone} -jar ${jar} --spring.profiles.active=peer"
目錄結構以下java
5.軟件包獲取地址:python