日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud【Finchley】-02服务发现与服务注册Eureka + Eureka Server的搭建

發布時間:2025/3/21 javascript 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud【Finchley】-02服务发现与服务注册Eureka + Eureka Server的搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 服務發現組件概述
  • Eureka概述
  • Eureka原理
  • Maven父子工程的搭建
  • Eureka Server的搭建
    • 新建 Maven Module
    • 添加spring-cloud-starter-eureka-server依賴
    • 啟動類增加@EnableEurekaServer注解
    • 配置文件配置Eureka等信息
    • 啟動Eureka Server測試
  • Github 代碼

服務發現組件概述

上篇文章 Spring Cloud-01服務提供者與服務消費者 中,我們通過配置文件的方式來配置服務提供者的地址,有兩個缺點

  • 如果服務提供者的ip和端口發生變化,將會影響服務消費者,服務消費者需要也跟著修改
  • 高可用需要依賴第三方,通常情況下每個微服務都會部署多個實例,實現負載均衡和容災,上篇博文中的例子在高可用上需要依賴第三方的組件比如Nginx、F5、HAProxy等
  • 顯然通過硬編碼的方式無法滿足上述的需求。


    在微服務中,服務發現組件的位置如下

    關系如上圖

    • 各個微服務在啟動時,將自己的網絡地址等信息注冊到服務發現組件中
    • 服務消費者可以從服務發現組件中查詢服務提供者的地址,并使用該地址調用服務提供者的提供的接口
    • 各個微服務與服務發現組件在使用一定的機制(比如心跳機制)來通信。當服務發現組件長時間無法與某微服務實例通信,將注銷該實例
    • 微服務網絡地址發生變更(比如實例增減或者ip端口發生變化)時,會重新注冊到服務發現組件。 使用這種方式,服務消費者就無需人工修改提供者的網絡地址了。

    Spring Cloud支持Eureka 、Consul 、Zookeeper 等。

    這里我們主要介紹的Eureka


    Eureka概述

    Eureka是Netflix開源的服務發現組件,一個基于REST的服務。 包含Server和Client兩部分。 Spring Cloud將它集成在子項目Spring Cloud Netflix中,從而實現微服務的注冊與發現

    https://github.com/Netflix/eureka


    Eureka原理

    官網上的圖 https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance

    由上圖可知,Eureka包含 Eureka Server和 Eureka Client

    • Eureka Server: 提供服務發現的能力,各個微服務啟動時,會向Eureka Server注冊信息,比如ip、端口、微服務名稱等。 Eureka Server會存儲這些信息

    • Eureka Client: Java 客戶端,用于簡化與Eureka Server的交互

    • 微服務啟動后,會周期性(默認30S)向Eureka Server發送心跳以續約自己的“租期”

    • 如果Eureka Server在一定時間內(默認90S)沒有接收到某個微服務實例的心跳,Eureka Server將注銷該實例。

    • 默認情況下,Eureka Server 同時也是 Eureka Client . 多個Eureka Server之間通過復制的方式來實現服務注冊表中數據的同步

    • Eureka Client會緩存服務注冊表中的信息,兩個好處 第一,微服務無需每次都請求查詢Eureka Server ,降低Server的壓力。 第二,即使Eureka Server所有節點都宕掉,服務消費者依然可以使用緩存中的信息找到服務提供者并完成調用。


    Maven父子工程的搭建

    這一步不是必須的,這里我們為了方案管理依賴

    首先我們將上篇博客中用到的provider和consumer中也放到父工程中去管理,簡單說下操作步驟

    • 新建個maven 工程作為父工程,刪除多余的文件和目錄,僅保留pom.xml即可。
    • 在maven父工程上右鍵,選擇maven module,新建子模塊即可。

    更多的父子工程信息, 請參考 http://www.cnblogs.com/telwanggs/p/7016561.html

    如何搭建也可以參考 https://blog.csdn.net/NancyWu_LuckyGirl/article/details/80244589

    父工程的pom.xml 如下

    <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><!-- http://www.cnblogs.com/telwanggs/p/7016561.html --><groupId>com.artisan</groupId><artifactId>microservice-spring-cloud</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>microservice-spring-cloud</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><modules><module>micorservice-provider-user</module><module>micorservice-consumer-movie</module><module>microservice-discovery-eureka</module></modules><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version></parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.RELEASE</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>

    http://spring.io/projects/spring-cloud#overview

    注意Spring boot 和 Spring Cloud的對應關系,否則啟動可能會出錯。


    Eureka Server的搭建

    Finchley版本的官方指導手冊: https://cloud.spring.io/spring-cloud-static/Finchley.SR2/multi/multi_spring-cloud-eureka-server.html

    新建 Maven Module

    在父工程 microservice-spring-cloud 上右鍵 New ,選擇


    添加spring-cloud-starter-eureka-server依賴

    <dependency> <groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId><version>1.4.6.RELEASE</version> </dependency>

    啟動類增加@EnableEurekaServer注解

    package com.artisan.microservice.eureka;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication @EnableEurekaServer public class EurekaApplication {public static void main(String args[]) {SpringApplication.run(EurekaApplication.class, args);}}

    配置文件配置Eureka等信息

    server:port: 8761 eureka:client:register-with-eureka: falsefetch-registry: falseservice-url:defaultZone: http://localhost:8761/eureka
    • eureka.client.register-with-eureka: 是否將自己注冊到Eureka Server ,默認為true.因為當前應用是作為Eureka Server用,因此設置為false

    • eureka.client.fetch-registry:是否從Eureka Server獲取注冊信息,默認為true, 因為我們這里是個單節點的Eureka Server ,不需要與其他的Eureka Server節點的數據,因此設為false

    • eureka.client.service-url.defaultZone : 設置與Eureka Server交互的地址,查詢服務和注冊服務都依賴這個地址,默認為 http://localhost:8761/eureka ,多個地址可使用 , 分隔。


    啟動Eureka Server測試

    訪問 http://localhost:8761/


    Eureka Server 首頁展示的信息包括 當前實例的系統狀態、注冊到Eureka Server的服務實例、常用信息、實例信息等 。

    我們這里看到是空的

    因為沒有微服務注冊上來,下面我們來看下如何將我們改造的用戶微服務和電影微服務注冊到Eureka Server上來吧。


    Github 代碼

    https://github.com/yangshangwei/SpringCloudMaster

    總結

    以上是生活随笔為你收集整理的Spring Cloud【Finchley】-02服务发现与服务注册Eureka + Eureka Server的搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。