springcloud-服務注冊與發(fā)現(xiàn)Eureka

什么是服務注冊與發(fā)現(xiàn)

服務消費者找到服務提供者的這種機制稱為服務發(fā)現(xiàn),又或者服務注冊。


服務提供者矾缓、服務消費者怀酷、服務發(fā)現(xiàn)組件這三者之間的關(guān)系大致如下:
  • 各個微服務在啟動時,將自己的網(wǎng)絡(luò)地址等信息注冊到服務發(fā)現(xiàn)組件中而账,服務發(fā)現(xiàn)組件會存儲這些信息胰坟;

  • 服務消費者可從服務發(fā)現(xiàn)組件查詢服務提供者的網(wǎng)絡(luò)地址,并使用該地址調(diào)用服務提供者的接口泞辐;

  • 各個微服務與服務發(fā)現(xiàn)組件使用一定機制(例如心跳)通信笔横。服務發(fā)現(xiàn)組件如長時間無法與某微服務實例通信,就會自動注銷(即:刪除)該實例咐吼;

  • 當微服務網(wǎng)絡(luò)地址發(fā)生變更(例如實例增減或者IP端口發(fā)生變化等)時吹缔,會重新注冊到服務發(fā)現(xiàn)組件;

  • 客戶端緩存:各個微服務將需要調(diào)用服務的地址緩存在本地锯茄,并使用一定機制更新(例如定時任務更新厢塘、事件推送更新等)。這樣既能降低服務發(fā)現(xiàn)組件的壓力肌幽,同時晚碾,即使服務發(fā)現(xiàn)組件出問題,也不會影響到服務之間的調(diào)用喂急。

綜上格嘁,服務發(fā)現(xiàn)組件應具備以下功能:
  • 服務注冊表:服務注冊表是服務發(fā)現(xiàn)組件的核心(其實就是類似于上面的registry表),它用來記錄各個微服務的信息廊移,例如微服務的名稱糕簿、IP、端口等狡孔。服務注冊表提供查詢API和管理API懂诗,查詢API用于查詢可用的微服務實例,管理API用于服務的注冊和注銷苗膝;

  • 服務注冊與服務發(fā)現(xiàn):服務注冊是指微服務在啟動時殃恒,將自己的信息注冊到服務發(fā)現(xiàn)組件上的過程。服務發(fā)現(xiàn)是指查詢可用微服務列表及其網(wǎng)絡(luò)地址的機制荚醒;

  • 服務檢查:服務發(fā)現(xiàn)組件使用一定機制定時檢測已注冊的服務芋类,如發(fā)現(xiàn)某實例長時間無法訪問,就會從服務注冊表中移除該實例界阁。

Eureka簡介

Eureka是Netflix開源的服務發(fā)現(xiàn)組件,本身是一個基于REST的服務胖喳,包含Server和Client兩部分泡躯,Spring Cloud將它集成在子項目Spring Cloud Netflix中。

搭建

創(chuàng)建父項目

1 打開IDEA

file-new-project-springInitializr
直接next

2 編輯Group和Aritifact,然后next
3 依賴不用加较剃,直接next
4 項目目錄以及命名編輯完點擊finish
5 然后關(guān)閉IDEA咕别,打開你剛剛新建的項目的文件夾,我一般都習慣刪除多余的文件写穴,然后重新打開項目惰拱,這樣項目會清爽一些,
藍色部分全部刪除
6 修改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 https://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.2.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-cloud-wsl</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-cloud-wsl</name>
    <description>Demo project for Spring Cloud</description>
    <packaging>pom</packaging>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR5</spring-cloud.version>
    </properties>

    <modules>
        <!-- 待填模塊名 -->
    </modules>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
    <!--依賴管理啊送,用于管理spring-cloud的依賴 -->
    <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>
7 創(chuàng)建spring-cloud-eureka模塊

在父項目上右鍵new-->module新建子模塊偿短,同樣什么依賴都不用加,和創(chuàng)建父項目的時候一樣
創(chuàng)建好之后馋没,在父項目的pom里添加module


8 刪除無用文件夾
9 修改spring-cloud-eureka模塊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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>spring-cloud-wsl</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-cloud-eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-cloud-eureka</name>
    <packaging>jar</packaging>
    <description>Demo project for Spring Cloud Eureka</description>
    <dependencies>
        <!-- eureka服務端依賴jar包 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
</project>

該pom繼承父pom


10 啟動類添加注解@EnableEurekaServer
//該注解表明應用為eureka服務昔逗,有可以聯(lián)合多個服務作為集群,對外提供服務注冊以及發(fā)現(xiàn)功能
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}
11 將配置文件改成yml格式篷朵,并編寫配置文件
server:
  port: 8761
#eureka客戶端連接配置
eureka:
  client:
    # 是否要注冊到其他Eureka Server實例
    register-with-eureka: false
    # 是否要從其他Eureka Server實例獲取數(shù)據(jù)
    fetch-registry: false
    service-url:
      #注冊中心地址
      defaultZone: http://localhost:8761/eureka/
12 啟動springcloud-eureka

啟動成功勾怒!


13 打開網(wǎng)頁輸入http://localhost:8761

到此啟動成功!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末声旺,一起剝皮案震驚了整個濱河市笔链,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腮猖,老刑警劉巖鉴扫,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缚够,居然都是意外死亡幔妨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門谍椅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來误堡,“玉大人,你說我怎么就攤上這事雏吭∷” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵杖们,是天一觀的道長悉抵。 經(jīng)常有香客問我,道長摘完,這世上最難降的妖魔是什么姥饰? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮孝治,結(jié)果婚禮上列粪,老公的妹妹穿的比我還像新娘审磁。我一直安慰自己,他們只是感情好岂座,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布态蒂。 她就那樣靜靜地躺著,像睡著了一般费什。 火紅的嫁衣襯著肌膚如雪钾恢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天鸳址,我揣著相機與錄音瘩蚪,去河邊找鬼。 笑死氯质,一個胖子當著我的面吹牛募舟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闻察,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼拱礁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辕漂?” 一聲冷哼從身側(cè)響起呢灶,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钉嘹,沒想到半個月后鸯乃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡跋涣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年缨睡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陈辱。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡奖年,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沛贪,到底是詐尸還是另有隱情陋守,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布利赋,位于F島的核電站水评,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏媚送。R本人自食惡果不足惜中燥,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望塘偎。 院中可真熱鬧褪那,春花似錦幽纷、人聲如沸式塌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽峰尝。三九已至偏窝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間武学,已是汗流浹背祭往。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留火窒,地道東北人硼补。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像熏矿,于是被迫代替她去往敵國和親已骇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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