微服務(wù)架構(gòu)實(shí)戰(zhàn)學(xué)習(xí)(六):Eureka Client 服務(wù)創(chuàng)建及注冊(cè)

接上篇,上篇我們實(shí)現(xiàn)了一個(gè) Eureka Server 的服務(wù)功能媳搪,并且能夠運(yùn)行起來(lái)作為我們的注冊(cè)中心。

此篇我們主要關(guān)心兩個(gè)問(wèn)題:

  • 如何將我們的注冊(cè)中心(Eureka Server)服務(wù)運(yùn)行在我們指定的地方呢?
  • 如何將我們的通用服務(wù)注冊(cè)到我們的注冊(cè)中心(Eureka Server)啄栓?

一撞叽、Eureka Server 打包及運(yùn)行

1.1 Eureka Server 打包

上篇中姻成,我們?cè)?IDEA 中運(yùn)行了我們的 Eureka Server 服務(wù),但是這顯然不適合線上環(huán)境能扒,因?yàn)槲覀兊拇蠖鄶?shù)服務(wù)都是運(yùn)行在 Linux 服務(wù)器上佣渴,并且絕大多數(shù)情況下,我們都是使用無(wú)界面的命令行模式進(jìn)行操作初斑。

因此辛润,這里介紹一個(gè)簡(jiǎn)單打包和運(yùn)行的方式。

  • maven 編譯打包

方法一见秤、IDEA maven 打包

Run -> Edit Configuration -> + -> Maven


配置 maven 打包

"Name" 處為此配置起一個(gè)名字砂竖,用于區(qū)分不同配置的打包,無(wú)命名要求鹃答。"Command line" 處填寫(xiě) "clean package" 然后點(diǎn)擊 "OK"


配置 Maven 打包參數(shù)

運(yùn)行 Maven 編譯打包


運(yùn)行 Maven 編譯打包

看到控制臺(tái)的日志輸出有錯(cuò)誤信息乎澄," 'repositories.repository.id' must be unique" 原因是 pom.xml 中配置了兩個(gè)重復(fù) id 的 repository,刪除一個(gè)测摔,然后再運(yùn)行編譯打包置济。

編譯成功

編譯打包成功后,可以在項(xiàng)目的系統(tǒng)目錄中的 target 目錄下找到已經(jīng)打包好的 jar 包

方法二锋八、使用 maven 命令行打包

找到項(xiàng)目的系統(tǒng)文件夾根目錄浙于。比如,我的項(xiàng)目的系統(tǒng)目錄位于 D:\ProgramData\workspace\eclipse-workspace\default\eureka 挟纱。從文件系統(tǒng)進(jìn)入該目錄羞酗,在該目錄的地址樣輸入 cmd 并回車(chē),可以看到我們已經(jīng)打開(kāi)了一個(gè) CMD 命令行窗口并且進(jìn)入了 D:\ProgramData\workspace\eclipse-workspace\default\eureka 的工作目錄紊服。然后在此命令窗口中運(yùn)行如下命令(或者點(diǎn)擊 IDEA 中下方的 Terminal 窗口也同理)

mvn clean package
命令行編譯打包

注:

  • 默認(rèn)情況下檀轨,我們打包生成的程序包是 .jar 文件
  • 使用 maven 命令行打包的方式需要你的操作系統(tǒng)環(huán)境中安裝了自定義的 maven 程序,并配置了環(huán)境變量欺嗤。而 在 IDEA 中直接使用 maven 打包則無(wú)此要求参萄,因?yàn)?IDEA 內(nèi)置了 maven 程序。此處不額外贅述 maven 的安裝與配置煎饼,如果你不會(huì) maven 的安裝與配置拧揽,直接百度或者直接使用方法一打包即可。

1.2 Eureka Server 服務(wù)運(yùn)行

找到我們打包生成的 .jar 文件,你可以把它拷貝到任何你想要放的目錄淤袜,當(dāng)然也可以放到服務(wù)器的文件目錄中痒谴,然后執(zhí)行如下命令即可運(yùn)行

java -jar eureka-0.0.1-SNAPSHOT.jar
命令行運(yùn)行
Eureka 服務(wù)后臺(tái)

注:

  • 如果需要使用后臺(tái)運(yùn)行我們的服務(wù),請(qǐng)百度搜索對(duì)應(yīng)平臺(tái)的后臺(tái)運(yùn)行即可铡羡,在此不作贅述积蔚。

二、Eureka Client

2.1 創(chuàng)建一個(gè) Eureka Client 服務(wù)

創(chuàng)建一個(gè) Eureka Client 服務(wù)的過(guò)程與創(chuàng)建 Eureka Server 服務(wù)的過(guò)程十分相似烦周。在此尽爆,作簡(jiǎn)要說(shuō)明

"File" -> "New" -> "Project" -> "Spring Initializr" -> 填寫(xiě)項(xiàng)目信息 -> 選擇組件 -> 填寫(xiě)包名及項(xiàng)目路徑(默認(rèn))-> "finish"
(如果在 "Spring Initializr" 的下一步出現(xiàn)了錯(cuò)誤,請(qǐng)將下方 Default: https://start.string.io 改為 Custom: http://start.string.io )

填寫(xiě)項(xiàng)目信息
選擇 client 的組件

至此读慎,一個(gè) Eureka Client 的架子就搭起來(lái)了漱贱。

2.2 項(xiàng)目配置及注意

  • 刪除多余目錄

如上一篇中所說(shuō),將 mvnwp 相關(guān)目錄刪除

  • pom.xml 配置

在我寫(xiě)這篇文章這天夭委,Spring 發(fā)布了 Finchley 的正式版本幅狮,但由于我們的 Eureka Server 使用的是 Finchley.RC2 版本,因此株灸,我們盡量保持服務(wù)端與客戶端版本一致崇摄。可以都使用 RELEASE 版本或者 RC2 版本(此處慌烧,我使用 RC2 版本逐抑,因?yàn)楸镜赜芯彺娌挥迷傧螺d了... 另外記得添加 repositories)

<?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.jiangzhuolin</groupId>
    <artifactId>eureka-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>eureka-client</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.2.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.RC2</spring-cloud.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</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>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

注: 如需要開(kāi)發(fā)一個(gè) Client 端面,基礎(chǔ)的 dependecy 部分請(qǐng)盡量保持與如上的 dependecy 一致屹蚊。

  • 項(xiàng)目配置

(1) @EnableDiscoveryClient/@EnableEurekaClient
要使我們的項(xiàng)目能夠成為一個(gè) Eureka Client厕氨,需要給我們的啟動(dòng)入口類添加一個(gè) @EnableDiscoveryClient 注解

package com.jiangzhuolin.eurekaclient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {

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

注:

  • @EnableDiscoveryClient 與 @EnableEurekaClient 這兩個(gè)注解在最新的 spring cloud 版本中已經(jīng)完全分離了,其中 EnableDiscoveryClient 是基于 spring-cloud-commons 組件的汹粤,而 EnableDiscoveryClient 是基于 spring-cloud-netflix 組件命斧,經(jīng)我分析源碼以及測(cè)試來(lái)看,二者在使用 Eureka Server 注冊(cè)中心時(shí)沒(méi)有區(qū)別玄括。而網(wǎng)上部分人說(shuō)的 EnableDiscoveryClient 可以在使用其他注冊(cè)中心時(shí)也可用冯丙,而 EnableEurekaClient 則只針對(duì) Eureka Server 注冊(cè)中心 時(shí)有效肉瓦。此處待驗(yàn)證遭京,源碼地址如下所示:

EnableEurekaClient源碼

EnableDiscoveryClient源碼

(2) application.yml 配置

將 resources 下自動(dòng)生成的 application.properties 改為 application.yml 并添加如下配置

spring:
  application:
    name: client-test

server:
  port: 8080

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8000/eureka/

其中:http://localhost:8000/eureka/ 對(duì)應(yīng)我們的 Eureka Server 的地址。

2.3 項(xiàng)目運(yùn)行

(1) 運(yùn)行方式一: IDEA 中直接運(yùn)行
右鍵 EurekaClientApplication 類 -> "Run 'EurekaClientApplication...'" 或者 "Run" -> "Run EurekaClientApplication"
IDEA 中運(yùn)行類的方式很多泞莉,此處僅列舉此兩種哪雕。

查看注冊(cè)中心的注冊(cè)狀態(tài)

(2) 運(yùn)行方式二: 命令行運(yùn)行打包文件

項(xiàng)目的打包與運(yùn)行方式與此文前面的打包與運(yùn)行的過(guò)程和方法如出一轍。因此鲫趁,不做詳述斯嚎,請(qǐng)參考前文。

三、總結(jié)

此文分享了如何編譯打包我們的項(xiàng)目堡僻,如何創(chuàng)建一個(gè)Eureka Client 項(xiàng)目糠惫,如何配置一個(gè) Eureka Client 項(xiàng)目以便能將 Eureka Client 注冊(cè)到我們的 Eureka Server 注冊(cè)中心。

問(wèn)題:此處钉疫,有的同學(xué)可能會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題硼讽。我們的 Eureka Server 是我們的服務(wù)注冊(cè)中心,用于注冊(cè)服務(wù)牲阁,發(fā)現(xiàn)服務(wù)等功能固阁。但當(dāng)前我們的 Eureka Server 只有一個(gè)服務(wù),這種情況下如果出現(xiàn)了某些問(wèn)題城菊,比如服務(wù)異常停止备燃,服務(wù)器宕機(jī)... 都有可能導(dǎo)致我們注冊(cè)中心出現(xiàn)問(wèn)題而不能使用。此時(shí)我們只能干瞪眼凌唬?并齐??

針對(duì)這種情況法瑟,前面那些淌水探坑的人肯定已經(jīng)發(fā)現(xiàn)這個(gè)問(wèn)題了冀膝,而這個(gè)問(wèn)題的解決方法就是為 Eureka Server 服務(wù)搭建一個(gè)高可用的服務(wù)集群,至于具體的實(shí)現(xiàn)方式霎挟,請(qǐng)聽(tīng)下回分解N哑省!酥夭!

此文源碼地址:https://github.com/jiangzhuolin/eureka-client-simple

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赐纱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熬北,更是在濱河造成了極大的恐慌疙描,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,686評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讶隐,死亡現(xiàn)場(chǎng)離奇詭異隔崎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)煞茫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)黎茎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人炉峰,你說(shuō)我怎么就攤上這事畏妖。” “怎么了疼阔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,160評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵戒劫,是天一觀的道長(zhǎng)半夷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)迅细,這世上最難降的妖魔是什么巫橄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,736評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮茵典,結(jié)果婚禮上嗦随,老公的妹妹穿的比我還像新娘。我一直安慰自己敬尺,他們只是感情好枚尼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著砂吞,像睡著了一般署恍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜻直,一...
    開(kāi)封第一講書(shū)人閱讀 50,043評(píng)論 1 291
  • 那天盯质,我揣著相機(jī)與錄音,去河邊找鬼概而。 笑死呼巷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赎瑰。 我是一名探鬼主播王悍,決...
    沈念sama閱讀 39,129評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼餐曼!你這毒婦竟也來(lái)了压储?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,872評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤源譬,失蹤者是張志新(化名)和其女友劉穎集惋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體踩娘,經(jīng)...
    沈念sama閱讀 44,318評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刮刑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了养渴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雷绢。...
    茶點(diǎn)故事閱讀 38,777評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖厚脉,靈堂內(nèi)的尸體忽然破棺而出习寸,到底是詐尸還是另有隱情胶惰,我是刑警寧澤傻工,帶...
    沈念sama閱讀 34,470評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響中捆,放射性物質(zhì)發(fā)生泄漏鸯匹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評(píng)論 3 317
  • 文/蒙蒙 一泄伪、第九天 我趴在偏房一處隱蔽的房頂上張望殴蓬。 院中可真熱鬧,春花似錦蟋滴、人聲如沸染厅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,861評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肖粮。三九已至,卻和暖如春尔苦,著一層夾襖步出監(jiān)牢的瞬間涩馆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,095評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工允坚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魂那,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,589評(píng)論 2 362
  • 正文 我出身青樓稠项,卻偏偏與公主長(zhǎng)得像涯雅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子展运,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評(píng)論 2 351

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