Spring Cloud 應用篇 之 Eureka 初體驗

(一)Spring Cloud 簡介

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎設施的開發(fā)骏掀,如服務發(fā)現(xiàn)注冊宠纯、配置中心淑倾、消息總線、負載均衡征椒、斷路器娇哆、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風格做到一鍵啟動和部署勃救。Spring Cloud并沒有重復制造輪子碍讨,它只是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實際考驗的服務框架組合起來蒙秒,通過Spring Boot風格進行再封裝屏蔽掉了復雜的配置和實現(xiàn)原理勃黍,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護的分布式系統(tǒng)開發(fā)工具包晕讲。

(二)搭建服務注冊中心 Eureka

Spring Cloud Eureka是 Spring Cloud Netflix 服務套件中的一部分覆获,它基于Netflix Eureka做了二次封裝,主要負責完成微服務架構中的服務治理功能瓢省。

1.構建一個 maven 主項目


20180531110317718.png

注:這里 Create from archetype 可以不用勾選弄息,直接構建一個空的 maven 項目。

可以在 maven 主項目里統(tǒng)一管理各個子項目所引用的依賴版本勤婚,這一系列項目所用的 Spring Cloud 版本為 Finchley.RC1摹量, Spring Boot 版本為 2.0.1.RELEASE, JDK 為 1.8

pom.xml 文件部分如下

    <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.RC1</spring-cloud.version>
        <spring-boot.version>2.0.1.RELEASE</spring-boot.version>
    </properties>

    <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>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  1. 創(chuàng)建一個 module馒胆,作為服務注冊中心 Eureka Server


    20180531111814575.png

注:這里 Create from archetype 仍然不用勾選缨称,直接構建一個空的 maven 項目。

創(chuàng)建完工程后祝迂,在 pom.xml 文件中引入依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

3. 啟動類

只需要在 Spring Boot 工程的啟動 EurekaServiceApplication 類上加 @EnableEurekaServer 注解睦尽。

@SpringBootApplication
@EnableEurekaServer
public class EurekaServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServiceApplication.class, args);
    }
}

4. Eureka 的配置文件 application.yaml

server:
  port: 8761
spring:
  application:
    name: eureka-service
eureka:
  instance:
    hostname: localhost
  client:
    #由于該應用為注冊中心,設置為false,表明不向注冊中心注冊自己
    register-with-eureka: false
    #是否從eureka服務器獲取注冊信息,這里不需要
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
logging:
  level:
    com:
      netflix:
        eureka: OFF
        discovery: OFF

Eureka 是一個高可用的組件(后續(xù)會配置)型雳,每一個實例注冊之后需要向注冊中心發(fā)送心跳当凡,在默認情況下 erureka server 也是一個eureka client ,必須要指定一個 server,通過 eureka.client.register-with-eureka:false 和 fetch-registry:false 來設置自己是一個eureka server

5. 運行 EurekaServiceApplication 啟動服務

在瀏覽器中輸入http://localhost:8761,就可以看到Eureka的管理界面

2018053111444680.png

當前因為還沒有服務注冊進來四啰,所以是 No instances available

(三)服務注冊與發(fā)現(xiàn):注冊服務提供者

  1. 創(chuàng)建一個 module宁玫,作為服務提供者粗恢,與創(chuàng)建 Eureka 類似

2. 添加 pom 依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

3. 啟動類

@SpringBootApplication
@EnableEurekaClient
@RestController
public class SpringCloudServiceApplication {

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

}

通過注解@EnableEurekaClient 表明自己是一個 EurekaClient柑晒。

@EnableEurekaClient 注解是基于 spring-cloud-netflix 依賴,只能 eureka 使用

還可以使用 @EnableDiscoveryClient

@EnableDiscoveryClient 注解是基于 spring-cloud-commons 依賴眷射,并且在classpath中實現(xiàn)

4. 寫一個服務接口

@RestController
public class PortService {

    @Value("${server.port}")
    String port;

    @RequestMapping("port")
    public String getPort() {
        return "Hello World, I'm from port : " + port;
    }
}

5. 配置文件 application.yaml

server:
  port: 8281

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
spring:
  application:
    name: spring-demo-service

6. 啟動應用


20180531125144892.png

在Eureka的控制臺上已經(jīng)看到應用名匙赞,證明服務提供者已經(jīng)成功注冊在Eureka上了

7. 在瀏覽器輸入 http://localhost:8281/port佛掖,如下

2018053112535459.png

源碼下載:https://github.com/shmilyah/spring-cloud-componets

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涌庭,隨后出現(xiàn)的幾起案子芥被,更是在濱河造成了極大的恐慌,老刑警劉巖坐榆,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拴魄,死亡現(xiàn)場離奇詭異,居然都是意外死亡席镀,警方通過查閱死者的電腦和手機匹中,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豪诲,“玉大人顶捷,你說我怎么就攤上這事∈豪椋” “怎么了服赎?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長交播。 經(jīng)常有香客問我重虑,道長,這世上最難降的妖魔是什么秦士? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任嚎尤,我火速辦了婚禮,結果婚禮上伍宦,老公的妹妹穿的比我還像新娘芽死。我一直安慰自己,他們只是感情好次洼,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布关贵。 她就那樣靜靜地躺著,像睡著了一般卖毁。 火紅的嫁衣襯著肌膚如雪揖曾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天亥啦,我揣著相機與錄音炭剪,去河邊找鬼。 笑死翔脱,一個胖子當著我的面吹牛奴拦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播届吁,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼错妖,長吁一口氣:“原來是場噩夢啊……” “哼绿鸣!你這毒婦竟也來了?” 一聲冷哼從身側響起暂氯,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤潮模,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后痴施,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擎厢,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年辣吃,在試婚紗的時候發(fā)現(xiàn)自己被綠了锉矢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡齿尽,死狀恐怖沽损,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情循头,我是刑警寧澤绵估,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站卡骂,受9級特大地震影響国裳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜全跨,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一缝左、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浓若,春花似錦渺杉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碌上,卻和暖如春倚评,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背馏予。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工天梧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人霞丧。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓呢岗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子敷燎,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

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