欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springcloud實(shí)現(xiàn)注冊(cè)中心Eureka

 更新時(shí)間:2018年02月01日 13:47:13   作者:純潔的蟲(chóng)紙  
這篇文章主要介紹了springcloud實(shí)現(xiàn)注冊(cè)中心Eureka,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Eureka是Netflix開(kāi)源的一款提供服務(wù)注冊(cè)和發(fā)現(xiàn)的產(chǎn)品,它提供了完整的Service Registry和Service Discovery實(shí)現(xiàn)。也是springcloud體系中最重要最核心的組件之一。

背景介紹

服務(wù)中心

服務(wù)中心又稱注冊(cè)中心,管理各種服務(wù)功能包括服務(wù)的注冊(cè)、發(fā)現(xiàn)、熔斷、負(fù)載、降級(jí)等,比如dubbo admin后臺(tái)的各種功能。

有了服務(wù)中心調(diào)用關(guān)系會(huì)有什么變化,畫(huà)幾個(gè)簡(jiǎn)圖來(lái)幫忙理解

項(xiàng)目A調(diào)用項(xiàng)目B

正常調(diào)用項(xiàng)目A請(qǐng)求項(xiàng)目B

有了服務(wù)中心之后,任何一個(gè)服務(wù)都不能直接去掉用,都需要通過(guò)服務(wù)中心來(lái)調(diào)用

項(xiàng)目A調(diào)用項(xiàng)目B,項(xiàng)目B在調(diào)用項(xiàng)目C

這時(shí)候調(diào)用的步驟就會(huì)為兩步:第一步,項(xiàng)目A首先從服務(wù)中心請(qǐng)求項(xiàng)目B服務(wù)器,然后項(xiàng)目B在從服務(wù)中心請(qǐng)求項(xiàng)目C服務(wù)。

上面的項(xiàng)目只是兩三個(gè)相互之間的簡(jiǎn)單調(diào)用,但是如果項(xiàng)目超過(guò)20個(gè)30個(gè)呢,在15年底的時(shí)候我司分布式的項(xiàng)目就達(dá)到了二十幾個(gè),畫(huà)一張圖來(lái)描述幾十個(gè)項(xiàng)目之間的相互調(diào)用關(guān)系全是線條,任何其中的一個(gè)項(xiàng)目改動(dòng),就會(huì)牽連好幾個(gè)項(xiàng)目跟著重啟,巨麻煩而且容易出錯(cuò)。通過(guò)服務(wù)中心來(lái)獲取服務(wù)你不需要關(guān)注你調(diào)用的項(xiàng)目IP地址,由幾臺(tái)服務(wù)器組成,每次直接去服務(wù)中心獲取可以使用的服務(wù)去調(diào)用既可。

由于各種服務(wù)都注冊(cè)到了服務(wù)中心,就有了去做很多高級(jí)功能條件。比如幾臺(tái)服務(wù)提供相同服務(wù)來(lái)做均衡負(fù)載;監(jiān)控服務(wù)器調(diào)用成功率來(lái)做熔斷,移除服務(wù)列表中的故障點(diǎn);監(jiān)控服務(wù)調(diào)用時(shí)間來(lái)對(duì)不同的服務(wù)器設(shè)置不同的權(quán)重等等。

說(shuō)Eureka之前我先八卦一下Netflix

Netflix

以下介紹來(lái)自于百度百科:

Netflix是一家美國(guó)公司,在美國(guó)、加拿大提供互聯(lián)網(wǎng)隨選流媒體播放,定制DVD、藍(lán)光光碟在線出租業(yè)務(wù)。該公司成立于1997年,總部位于加利福尼亞州洛斯蓋圖,1999年開(kāi)始訂閱服務(wù)。2009年,該公司可提供多達(dá)10萬(wàn)部DVD電影,并有1千萬(wàn)的訂戶。2007年2月25日,Netflix宣布已經(jīng)售出第10億份DVD。HIS一份報(bào)告中表示,2011年Netflix網(wǎng)絡(luò)電影銷量占據(jù)美國(guó)用戶在線電影總銷量的45%。

我第一次看到這個(gè)單詞的時(shí)候,是在各種美劇或者電影的開(kāi)頭,Netflix拍攝的代表性的美劇有《紙牌屋》、《毒梟》、《怪奇物語(yǔ)》。后來(lái)研究springcloud的時(shí)候發(fā)現(xiàn)了Netflix公司,就在想它們是不是同一家公司,經(jīng)過(guò)核對(duì)github上面郵件后綴判定確實(shí)是同一家公司,其實(shí)springcloud的微服務(wù)就基于Netflix公司的開(kāi)源產(chǎn)品來(lái)做的。

Netflix的開(kāi)源框架組件已經(jīng)在Netflix的大規(guī)模分布式微服務(wù)環(huán)境中經(jīng)過(guò)多年的生產(chǎn)實(shí)戰(zhàn)驗(yàn)證,正逐步被社區(qū)接受為構(gòu)造微服務(wù)框架的標(biāo)準(zhǔn)組件。Spring Cloud開(kāi)源產(chǎn)品,主要是基于對(duì)Netflix開(kāi)源組件的進(jìn)一步封裝,方便Spring開(kāi)發(fā)人員構(gòu)建微服務(wù)基礎(chǔ)框架。對(duì)于一些打算構(gòu)建微服務(wù)框架體系的公司來(lái)說(shuō),充分利用或參考借鑒Netflix的開(kāi)源微服務(wù)組件(或Spring Cloud),在此基礎(chǔ)上進(jìn)行必要的企業(yè)定制,無(wú)疑是通向微服務(wù)架構(gòu)的捷徑。

Eureka

按照官方介紹:

Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.

Eureka 是一個(gè)基于 REST 的服務(wù),主要在 AWS 云中使用, 定位服務(wù)來(lái)進(jìn)行中間層服務(wù)器的負(fù)載均衡和故障轉(zhuǎn)移。

Spring Cloud 封裝了 Netflix 公司開(kāi)發(fā)的 Eureka 模塊來(lái)實(shí)現(xiàn)服務(wù)注冊(cè)和發(fā)現(xiàn)。Eureka 采用了 C-S 的設(shè)計(jì)架構(gòu)。Eureka Server 作為服務(wù)注冊(cè)功能的服務(wù)器,它是服務(wù)注冊(cè)中心。而系統(tǒng)中的其他微服務(wù),使用 Eureka 的客戶端連接到 Eureka Server,并維持心跳連接。這樣系統(tǒng)的維護(hù)人員就可以通過(guò) Eureka Server 來(lái)監(jiān)控系統(tǒng)中各個(gè)微服務(wù)是否正常運(yùn)行。Spring Cloud 的一些其他模塊(比如Zuul)就可以通過(guò) Eureka Server 來(lái)發(fā)現(xiàn)系統(tǒng)中的其他微服務(wù),并執(zhí)行相關(guān)的邏輯。

Eureka由兩個(gè)組件組成:Eureka服務(wù)器和Eureka客戶端。Eureka服務(wù)器用作服務(wù)注冊(cè)服務(wù)器。Eureka客戶端是一個(gè)java客戶端,用來(lái)簡(jiǎn)化與服務(wù)器的交互、作為輪詢負(fù)載均衡器,并提供服務(wù)的故障切換支持。Netflix在其生產(chǎn)環(huán)境中使用的是另外的客戶端,它提供基于流量、資源利用率以及出錯(cuò)狀態(tài)的加權(quán)負(fù)載均衡。

用一張圖來(lái)認(rèn)識(shí)以下:

上圖簡(jiǎn)要描述了Eureka的基本架構(gòu),由3個(gè)角色組成:

1、Eureka Server

  1. 提供服務(wù)注冊(cè)和發(fā)現(xiàn)

2、Service Provider

  1. 服務(wù)提供方
  2. 將自身服務(wù)注冊(cè)到Eureka,從而使服務(wù)消費(fèi)方能夠找到

3、Service Consumer

  1. 服務(wù)消費(fèi)方
  2. 從Eureka獲取注冊(cè)服務(wù)列表,從而能夠消費(fèi)服務(wù)

案例實(shí)踐

Eureka Server

spring cloud已經(jīng)幫我實(shí)現(xiàn)了服務(wù)注冊(cè)中心,我們只需要很簡(jiǎn)單的幾個(gè)步驟就可以完成。

1、pom中添加依賴

<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

2、添加啟動(dòng)代碼中添加@EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaApplication {

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

3、配置文件

在默認(rèn)設(shè)置下,該服務(wù)注冊(cè)中心也會(huì)將自己作為客戶端來(lái)嘗試注冊(cè)它自己,所以我們需要禁用它的客戶端注冊(cè)行為,在application.properties添加以下配置:

spring.application.name=spring-cloud-eureka

server.port=8000
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
  1. eureka.client.register-with-eureka :表示是否將自己注冊(cè)到Eureka Server,默認(rèn)為true。
  2. eureka.client.fetch-registry :表示是否從Eureka Server獲取注冊(cè)信息,默認(rèn)為true。
  3. eureka.client.serviceUrl.defaultZone :設(shè)置與Eureka Server交互的地址,查詢服務(wù)和注冊(cè)服務(wù)都需要依賴這個(gè)地址。默認(rèn)是http://localhost:8761/eureka ;多個(gè)地址可使用 , 分隔。

啟動(dòng)工程后,訪問(wèn):http://localhost:8000/,可以看到下面的頁(yè)面,其中還沒(méi)有發(fā)現(xiàn)任何服務(wù)

集群

注冊(cè)中心這么關(guān)鍵的服務(wù),如果是單點(diǎn)話,遇到故障就是毀滅性的。在一個(gè)分布式系統(tǒng)中,服務(wù)注冊(cè)中心是最重要的基礎(chǔ)部分,理應(yīng)隨時(shí)處于可以提供服務(wù)的狀態(tài)。為了維持其可用性,使用集群是很好的解決方案。Eureka通過(guò)互相注冊(cè)的方式來(lái)實(shí)現(xiàn)高可用的部署,所以我們只需要將Eureke Server配置其他可用的serviceUrl就能實(shí)現(xiàn)高可用部署。

雙節(jié)點(diǎn)注冊(cè)中心

首次我們嘗試一下雙節(jié)點(diǎn)的注冊(cè)中心的搭建。

1、創(chuàng)建application-peer1.properties,作為peer1服務(wù)中心的配置,并將serviceUrl指向peer2

spring.application.name=spring-cloud-eureka
server.port=8000
eureka.instance.hostname=peer1

eureka.client.serviceUrl.defaultZone=http://peer2:8001/eureka/

2、創(chuàng)建application-peer2.properties,作為peer2服務(wù)中心的配置,并將serviceUrl指向peer1

spring.application.name=spring-cloud-eureka
server.port=8001
eureka.instance.hostname=peer2

eureka.client.serviceUrl.defaultZone=http://peer1:8000/eureka/

3、host轉(zhuǎn)換

在hosts文件中加入如下配置

127.0.0.1 peer1 
127.0.0.1 peer2 

4、打包啟動(dòng)

依次執(zhí)行下面命令

#打包
mvn clean package
# 分別以peer1和peeer2 配置信息啟動(dòng)eureka
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

依次啟動(dòng)完成后,瀏覽器輸入:http://localhost:8000/ 效果圖如下:

根據(jù)圖可以看出peer1的注冊(cè)中心DS Replicas已經(jīng)有了peer2的相關(guān)配置信息,并且出現(xiàn)在available-replicas中。我們手動(dòng)停止peer2來(lái)觀察,發(fā)現(xiàn)peer2就會(huì)移動(dòng)到unavailable-replicas一欄中,表示peer2不可用。

到此雙節(jié)點(diǎn)的配置已經(jīng)完成。

eureka集群使用

在生產(chǎn)中我們可能需要三臺(tái)或者大于三臺(tái)的注冊(cè)中心來(lái)保證服務(wù)的穩(wěn)定性,配置的原理其實(shí)都一樣,將注冊(cè)中心分別指向其它的注冊(cè)中心。這里只介紹三臺(tái)集群的配置情況,其實(shí)和雙節(jié)點(diǎn)的注冊(cè)中心類似,每臺(tái)注冊(cè)中心分別又指向其它兩個(gè)節(jié)點(diǎn)即可,使用application.yml來(lái)配置。

application.yml配置詳情如下:

---
spring:
 application:
  name: spring-cloud-eureka
 profiles: peer1
server:
 port: 8000
eureka:
 instance:
  hostname: peer1
 client:
  serviceUrl:
   defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
---
spring:
 application:
  name: spring-cloud-eureka
 profiles: peer2
server:
 port: 8001
eureka:
 instance:
  hostname: peer2
 client:
  serviceUrl:
   defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
---
spring:
 application:
  name: spring-cloud-eureka
 profiles: peer3
server:
 port: 8002
eureka:
 instance:
  hostname: peer3
 client:
  serviceUrl:
   defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/

分別以peer1、peer2、peer3的配置參數(shù)啟動(dòng)eureka注冊(cè)中心。

java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3

依次啟動(dòng)完成后,瀏覽器輸入:http://localhost:8000/ 效果圖如下:

可以在peer1中看到了peer2、peer3的相關(guān)信息。至此eureka集群也已經(jīng)完成了

示例代碼

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Elasticsearch?percolate?查詢示例詳解

    Elasticsearch?percolate?查詢示例詳解

    這篇文章主要為大家介紹了Elasticsearch?percolate?查詢示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • JAVA如何獲取30天或某段范圍日期

    JAVA如何獲取30天或某段范圍日期

    JAVA獲取30天或某段范圍日期的方法,在項(xiàng)目使用中比較頻繁,通過(guò)示例代碼介紹了Java獲取當(dāng)前時(shí)間的上一年、下一年、上個(gè)月、下個(gè)月、前一天,當(dāng)天,本周,上周,本季度,上季度等(時(shí)間格式化),感興趣的朋友一起看看吧
    2023-10-10
  • Java語(yǔ)言面向?qū)ο缶幊趟枷胫惻c對(duì)象實(shí)例詳解

    Java語(yǔ)言面向?qū)ο缶幊趟枷胫惻c對(duì)象實(shí)例詳解

    這篇文章主要介紹了Java語(yǔ)言面向?qū)ο缶幊趟枷胫惻c對(duì)象實(shí)例詳解,還是十分不錯(cuò)的,這里給大家分享下,需要的朋友可以參考。
    2017-10-10
  • Java 回調(diào)機(jī)制(CallBack) 詳解及實(shí)例代碼

    Java 回調(diào)機(jī)制(CallBack) 詳解及實(shí)例代碼

    這篇文章主要介紹了 Java 回調(diào)機(jī)制(CallBack) 詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java之TreeSet和TreeMap的兩種排序方式解讀

    Java之TreeSet和TreeMap的兩種排序方式解讀

    這篇文章主要介紹了Java之TreeSet和TreeMap的兩種排序方式解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 如何使用Java完成Socket通信

    如何使用Java完成Socket通信

    這篇文章主要介紹了如何使用Java完成Socket通信問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Spring中propagation的傳播機(jī)制詳解

    Spring中propagation的傳播機(jī)制詳解

    這篇文章主要介紹了Spring中propagation的傳播機(jī)制詳解,要搞懂事務(wù)的傳播機(jī)制,那么就要明白邏輯事務(wù)中各個(gè)事務(wù)的關(guān)系,才能徹底理解事務(wù)傳播特性,在Spring事務(wù)中,各個(gè)邏輯事務(wù)的關(guān)系可以是并列、覆蓋或包含,需要的朋友可以參考下
    2023-12-12
  • Spring Boot啟動(dòng)過(guò)程(四)之Spring Boot內(nèi)嵌Tomcat啟動(dòng)

    Spring Boot啟動(dòng)過(guò)程(四)之Spring Boot內(nèi)嵌Tomcat啟動(dòng)

    這篇文章主要介紹了Spring Boot啟動(dòng)過(guò)程(四)之Spring Boot內(nèi)嵌Tomcat啟動(dòng)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-04-04
  • Java番外雜談之每天掃的二維碼你了解它內(nèi)含的信息嗎

    Java番外雜談之每天掃的二維碼你了解它內(nèi)含的信息嗎

    二維碼已經(jīng)成為我們?nèi)粘I钪斜夭豢缮俚慕M成部分了,登錄需要掃一掃二維碼、買東西付錢(qián)需要掃一掃二維碼、開(kāi)會(huì)簽到也需要掃一掃二維碼,那么如此使用的二維碼技術(shù),背后的原理是怎樣的呢?本文將結(jié)合二維碼的發(fā)展歷程以及典型應(yīng)用場(chǎng)景,分析二維碼背后的技術(shù)原理
    2022-02-02
  • Java由淺入深講解繼承上

    Java由淺入深講解繼承上

    繼承就是可以直接使用前輩的屬性和方法。自然界如果沒(méi)有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個(gè)接口,使用不同的實(shí)例而執(zhí)行不同操作
    2022-04-04

最新評(píng)論