spring cloud - eureka 簡(jiǎn)單入門

Eureka

官方介紹:

Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.

Eureka 是一個(gè)基于 REST 的服務(wù)闯参,主要在 AWS 云中使用, 定位服務(wù)來(lái)進(jìn)行中間層服務(wù)器的負(fù)載均衡和故障轉(zhuǎn)移喝峦。

Spring Cloud 封裝了 Netflix 公司開發(fā)的 Eureka 模塊來(lái)實(shí)現(xiàn)服務(wù)注冊(cè)和發(fā)現(xiàn)。Eureka 采用了 C-S 的設(shè)計(jì)架構(gòu)乃沙。Eureka Server 作為服務(wù)注冊(cè)功能的服務(wù)器诽表,它是服務(wù)注冊(cè)中心唉锌。而系統(tǒng)中的其他微服務(wù),使用 Eureka 的客戶端連接到 Eureka Server竿奏,并維持心跳連接袄简。這樣系統(tǒng)的維護(hù)人員就可以通過(guò) Eureka Server 來(lái)監(jiān)控系統(tǒng)中各個(gè)微服務(wù)是否正常運(yùn)行。Spring Cloud 的一些其他模塊(比如Zuul)就可以通過(guò) Eureka Server 來(lái)發(fā)現(xiàn)系統(tǒng)中的其他微服務(wù)泛啸,并執(zhí)行相關(guān)的邏輯绿语。

Eureka由兩個(gè)組件組成:Eureka服務(wù)器和Eureka客戶端。Eureka服務(wù)器用作服務(wù)注冊(cè)服務(wù)器候址。Eureka客戶端是一個(gè)java客戶端吕粹,用來(lái)簡(jiǎn)化與服務(wù)器的交互、作為輪詢負(fù)載均衡器岗仑,并提供服務(wù)的故障切換支持昂芜。Netflix在其生產(chǎn)環(huán)境中使用的是另外的客戶端,它提供基于流量赔蒲、資源利用率以及出錯(cuò)狀態(tài)的加權(quán)負(fù)載均衡泌神。

用一張圖來(lái)認(rèn)識(shí)以下:
1512723734(1).jpg

上圖簡(jiǎn)要描述了Eureka的基本架構(gòu),由3個(gè)角色組成:

1舞虱、Eureka Server

  • 提供服務(wù)注冊(cè)和發(fā)現(xiàn)

2欢际、Service Provider

  • 服務(wù)提供方
  • 將自身服務(wù)注冊(cè)到Eureka,從而使服務(wù)消費(fèi)方能夠找到

3矾兜、Service Consumer

  • 服務(wù)消費(fèi)方
  • 從Eureka獲取注冊(cè)服務(wù)列表损趋,從而能夠消費(fèi)服務(wù)

一、單機(jī)案例分析:

spring boot - 初始化項(xiàng)目鏈接:
http://start.spring.io/

1椅寺、pom中添加依賴

<?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>

    <groupId>com.neo</groupId>
    <artifactId>spring-cloud-eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-cloud-eureka</name>
    <description>Demo project for Spring cloud eureka</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
        <spring-cloud.version>Dalston.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </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>

這邊有個(gè)一問(wèn)題浑槽,要是約束報(bào)錯(cuò)蒋失,
解決方法:maven-->update project --> force update of snapshots/releases 勾選,然后ok

2桐玻、添加啟動(dòng)代碼中添加@EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer//添加這個(gè)注解
public class SpringCloudEurekaApplication {

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

3篙挽、配置文件

在默認(rèn)設(shè)置下,該服務(wù)注冊(cè)中心也會(huì)將自己作為客戶端來(lái)嘗試注冊(cè)它自己镊靴,所以我們需要禁用它的客戶端注冊(cè)行為铣卡,在application.properties添加以下配置:

spring.application.name=spring-cloud-eureka

server.port=8000
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

eureka.client.register-with-eureka :表示是否將自己注冊(cè)到Eureka Server,默認(rèn)為true偏竟。
eureka.client.fetch-registry :表示是否從Eureka Server獲取注冊(cè)信息煮落,默認(rèn)為true。
eureka.client.serviceUrl.defaultZone :設(shè)置與Eureka Server交互的地址踊谋,查詢服務(wù)和注冊(cè)服務(wù)都需要依賴這個(gè)地址蝉仇。
默認(rèn)是http://localhost:8761/eureka ;多個(gè)地址可使用 , 分隔殖蚕。

4量淌、測(cè)試

啟動(dòng)工程后,訪問(wèn):http://localhost:8000/嫌褪,可以看到下面的頁(yè)面,其中還沒(méi)有發(fā)現(xiàn)任何服務(wù)

1512724486(1).jpg

二胚股、集群案例分析:

雙節(jié)點(diǎn)注冊(cè)中心

將項(xiàng)目復(fù)制兩份笼痛,application.properties 刪除
1、創(chuàng)建application-peer1.properties琅拌,作為peer1服務(wù)中心的配置缨伊,并將serviceUrl指向peer2

spring.application.name=spring-cloud-eureka
server.port=8000
eureka.instance.hostname=peer1

eureka.client.serviceUrl.defaultZone=http://peer2:8001/eureka/

這邊記住:

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

這兩個(gè)不需要进宝,這才能自己注冊(cè)到Eureka Server刻坊,獲取server的信息

2、創(chuàng)建application-peer2.properties党晋,作為peer2服務(wù)中心的配置谭胚,并將serviceUrl指向peer1

spring.application.name=spring-cloud-eureka
server.port=8001
eureka.instance.hostname=peer2

eureka.client.serviceUrl.defaultZone=http://peer1:8000/eureka/

3、host轉(zhuǎn)換

在hosts文件中加入如下配置

127.0.0.1 peer1  
127.0.0.1 peer2  

這邊需要注意hosts需要管理員權(quán)限才能修改未玻,可以管理員身份打開記事本及EditPlus灾而,然后軟件內(nèi)打開hosts文件,修改保存扳剿,
配置成功檢驗(yàn):
localhost:8000--->peer1:8000 效果是一樣的

4旁趟、打包啟動(dòng)

依次執(zhí)行下面命令

#打包 eclipse mvn 打包自帶mvn 這邊 clean 前不需要加
clean package
# 分別以peer1和peeer2 配置信息啟動(dòng)eureka
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

這邊有個(gè)問(wèn)題,打包的時(shí)候會(huì)報(bào)錯(cuò):TransportException: Cannot execute request on any known server
原因:沒(méi)有加

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

不過(guò)不用管庇绽,最后還是success

之后Java -jar 分別運(yùn)行即可

5锡搜、測(cè)試
http://localhost:8000/

1512725299(1).jpg

根據(jù)圖可以看出peer1的注冊(cè)中心DS Replicas已經(jīng)有了peer2的相關(guān)配置信息橙困,并且出現(xiàn)在available-replicas中。我們手動(dòng)停止peer2來(lái)觀察耕餐,發(fā)現(xiàn)peer2就會(huì)移動(dòng)到unavailable-replicas一欄中凡傅,表示peer2不可用。

到此雙節(jié)點(diǎn)的配置已經(jīng)完成蛾方。

至此像捶,蟹蟹!

更多精彩內(nèi)容桩砰,請(qǐng)看大神的:
傳送門 http://www.ityouknow.com/spring-cloud

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拓春,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亚隅,更是在濱河造成了極大的恐慌硼莽,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煮纵,死亡現(xiàn)場(chǎng)離奇詭異懂鸵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)行疏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門匆光,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人酿联,你說(shuō)我怎么就攤上這事终息。” “怎么了贞让?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵周崭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我喳张,道長(zhǎng)续镇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任销部,我火速辦了婚禮摸航,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舅桩。我一直安慰自己忙厌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布江咳。 她就那樣靜靜地躺著逢净,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爹土,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天甥雕,我揣著相機(jī)與錄音,去河邊找鬼胀茵。 笑死社露,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的琼娘。 我是一名探鬼主播峭弟,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼脱拼!你這毒婦竟也來(lái)了瞒瘸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤熄浓,失蹤者是張志新(化名)和其女友劉穎情臭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赌蔑,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俯在,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了娃惯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跷乐。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖趾浅,靈堂內(nèi)的尸體忽然破棺而出愕提,到底是詐尸還是另有隱情,我是刑警寧澤潮孽,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站筷黔,受9級(jí)特大地震影響往史,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜佛舱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一椎例、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧请祖,春花似錦订歪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春眼虱,著一層夾襖步出監(jiān)牢的瞬間喻奥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工捏悬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撞蚕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓过牙,卻偏偏與公主長(zhǎng)得像甥厦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寇钉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容