Chapter 2 - Spring Cloud Eureka 介紹與demo

1 微服務模塊功能介紹

1.1 服務治理

服務治理是微服務架構中最為核心和基礎的模塊账忘,它主要用來實現各個微服務實例的自動化注冊和發(fā)現贮折。
Spring Cloud Eureka是Spring Cloud Netflix微服務套件中的一部分粗合,它基于Netflix Eureka做了二次封裝。主要負責完成微服務架構中的服務治理功能。

1.2 服務注冊

在服務治理框架中长赞,通常都會構建一個注冊中心赎离,每個服務單元向注冊中心登記自己提供的服務逛犹,包括服務的主機與端口號、服務版本號梁剔、通訊協議等一些附加信息虽画。注冊中心按照服務名分類組織服務清單,同時還需要以心跳檢測的方式去監(jiān)測清單中的服務是否可用荣病,若不可用需要從服務清單中剔除码撰,以達到排除故障服務的效果。

1.3 服務發(fā)現

在服務治理框架下个盆,服務間的調用不再通過指定具體的實例地址來實現脖岛,而是通過服務名發(fā)起請求調用實現。服務調用方通過服務名從服務注冊中心的服務清單中獲取服務實例的列表清單颊亮,通過指定的負載均衡策略取出一個服務實例位置來進行服務調用柴梆。

2 Demo搭建

2.1 Eureka Server 搭建服務注冊中心

工程結構如下

/src
  /main
    /java
      /com/lerr/baseeureka
        BaseEurekaApplication.java
    /resources
      application.properties
pom.xml
2.1.1 以Maven為例,進行工程依賴配置
  • pom.xml (pom.xml引入相關依賴)
    <!-- 使用阿里云配置终惑,下載速度可靠 -->
    <repositories>
        <repository>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>

    <!-- 繼承 spring-boot-starter-parent 一些已有的配置  -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.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.8</java.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <!-- 引入 eureka-server表明當前工程是作為服務注冊中心 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-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>
2.1.2 主啟動類绍在,增加注解@EnableEurekaServer,開啟Server能力
  • BaseEurekaApplication.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer //啟動一個服務注冊中心雹有,供其他應用進行對話
@SpringBootApplication
public class BaseEurekaApplication {

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

}

2.1.3 配置文件配置

由于本身是服務注冊中心偿渡,因此不需要自己向自己注冊,eureka.client.register-with-eureka因為默認是true霸奕,所以需要特別注意聲明為false

  • application.properties
server.port=1111

eureka.instance.hostname=localhost
# 不向注冊中心注冊自己
eureka.client.register-with-eureka=false
# 注冊中心的職責是維護實例卸察,不需要去檢索服務
eureka.client.fetch-registry=false
2.1.4 啟動工程并訪問

訪問 http://localhost:1111/

Eureka 主頁

2.2 微服務模塊去注冊中心注冊

工程結構如下

/src
  /main
    /java
      /com/lerr/basemsone
        BaseMsOneApplication.java
    /resources
      application.properties
      bootstrap.properties
pom.xml
2.2.1 依賴配置,pom.xml
  • pom.xml
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.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.8</java.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

        <!-- 如果是具體業(yè)務模塊铅祸,引入eureka-client依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </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>
2.2.2 啟動類配置
@EnableDiscoveryClient  //表明去注冊中心注冊  
@SpringBootApplication
public class BaseMsOneApplication {

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

}
2.2.3 配置文件
  • application.properties
server.port=8180
  • bootstrap.properties
# 設定服務名稱
spring.application.name=ms-one
# 服務注冊中心的地址坑质,告訴應用去這個地方注冊
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/

3 啟動服務注冊中心和微服務

3.1 服務注冊中心頁面截圖

image.png

3.2 日志分析

可以看一下微服務模塊的日志合武,表示的是去服務中心注冊

2018-08-20 23:17:05.257  INFO 21816 --- [           main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1534778225257 with initial instances count: 0
2018-08-20 23:17:05.261  INFO 21816 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application ms-one with eureka with status UP
2018-08-20 23:17:05.262  INFO 21816 --- [           main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1534778225262, current=UP, previous=STARTING]
2018-08-20 23:17:05.264  INFO 21816 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_MS-ONE/F0R6S7J.SU.intra.cpic.com.cn:ms-one:8180: registering service...

同時看一下服務注冊中心的日志,當有應用過來注冊涡扼,則輸出如下日志

2018-08-20 23:17:05.395  INFO 24168 --- [nio-1111-exec-9] c.n.e.registry.AbstractInstanceRegistry  : Registered instance MS-ONE/F0R6S7J.SU.intra.cpic.com.cn:ms-one:8180 with status UP (replication=false)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末稼跳,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子吃沪,更是在濱河造成了極大的恐慌汤善,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件票彪,死亡現場離奇詭異红淡,居然都是意外死亡,警方通過查閱死者的電腦和手機降铸,發(fā)現死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門在旱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人推掸,你說我怎么就攤上這事桶蝎。” “怎么了谅畅?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵登渣,是天一觀的道長。 經常有香客問我毡泻,道長胜茧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任仇味,我火速辦了婚禮竹揍,結果婚禮上,老公的妹妹穿的比我還像新娘邪铲。我一直安慰自己,他們只是感情好无拗,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布带到。 她就那樣靜靜地躺著,像睡著了一般英染。 火紅的嫁衣襯著肌膚如雪揽惹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天四康,我揣著相機與錄音搪搏,去河邊找鬼。 笑死闪金,一個胖子當著我的面吹牛疯溺,可吹牛的內容都是我干的论颅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼囱嫩,長吁一口氣:“原來是場噩夢啊……” “哼恃疯!你這毒婦竟也來了?” 一聲冷哼從身側響起墨闲,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤今妄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鸳碧,有當地人在樹林里發(fā)現了一具尸體盾鳞,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年瞻离,在試婚紗的時候發(fā)現自己被綠了腾仅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡琐脏,死狀恐怖攒砖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情日裙,我是刑警寧澤吹艇,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站昂拂,受9級特大地震影響受神,放射性物質發(fā)生泄漏。R本人自食惡果不足惜格侯,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一鼻听、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧联四,春花似錦撑碴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至收苏,卻和暖如春亿卤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹿霸。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工排吴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懦鼠。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓钻哩,卻偏偏與公主長得像屹堰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子憋槐,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理双藕,服務發(fā)現,斷路器阳仔,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 1. 基礎知識[1] 什么是微服務架構忧陪? 微服務是系統架構上的一種設計風格; 主旨是將一個原本獨立的系統拆分成多個...
    JT_X閱讀 1,059評論 0 0
  • 1 為什么需要服務發(fā)現 簡單來說近范,服務化的核心就是將傳統的一站式應用根據業(yè)務拆分成一個一個的服務嘶摊,而微服務在這個基...
    謙小易閱讀 25,092評論 4 93
  • 本文來自作者 未聞 在 GitChat 分享的{基于 Docker 的微服務架構實踐} 前言 基于 Docker ...
    AI喬治閱讀 7,275評論 0 71
  • 靜心,去聆聽每一個故事评矩。
    c1405885c2b7閱讀 56評論 0 0