一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - JAVA教程 - Spring Cloud構(gòu)建Eureka應(yīng)用的方法

Spring Cloud構(gòu)建Eureka應(yīng)用的方法

2021-04-10 13:17blueskyX JAVA教程

這篇文章主要介紹了Spring Cloud構(gòu)建Eureka應(yīng)用的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

eureka 介紹

eureka提供基于rest的服務(wù),在集群中主要用于服務(wù)管理。eureka提供了基于java語言的客戶端組件,客戶端組件實(shí)現(xiàn)了負(fù)載均衡的功能,為業(yè)務(wù)組件的集群部署創(chuàng)造了條件。使用該框架,可以將業(yè)務(wù)組件注冊到eureka容器中,這些業(yè)務(wù)組件可進(jìn)行集群部署,eureka主要維護(hù)這些服務(wù)的列表并自動檢查它們的狀態(tài)。

程序結(jié)構(gòu)

Spring Cloud構(gòu)建Eureka應(yīng)用的方法

創(chuàng)建eureka server

maven依賴

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<dependencymanagement>
  <dependencies>
    <dependency>
      <groupid>org.springframework.cloud</groupid>
      <artifactid>spring-cloud-dependencies</artifactid>
      <version>dalston.sr1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencymanagement>
 
<dependencies>
  <dependency>
    <groupid>org.springframework.cloud</groupid>
    <artifactid>spring-cloud-starter-eureka-server</artifactid>
  </dependency>
</dependencies>

更改spring boot 啟動端口 在application.yml

?
1
2
server:
 port: 8761

開啟eureka服務(wù)注解 @enableeurekaserver

?
1
2
3
4
5
6
7
8
@enableeurekaserver
@springbootapplication
public class ekserverapplication {
 
  public static void main(string[] args) {
    new springapplicationbuilder(ekserverapplication.class).run(args);
  }
}

啟動springboot

?
1
2
3
4
[thread-11] o.s.c.n.e.server.eurekaserverbootstrap: initialized server context
[main] s.b.c.e.t.tomcatembeddedservletcontainer: tomcat started on port(s): 8761 (http)
[main] .s.c.n.e.s.eurekaautoserviceregistration: updating port to 8761
[main] c.b.firstekserver.ekserverapplication: started ekserverapplication in 8.594 seconds (jvm running for 9.523)

啟動期間會出現(xiàn)一個(gè)無法連接到服務(wù)器的異常 這個(gè)是由于eureka在啟動的時(shí)候會把自己當(dāng)作一個(gè)客戶端去服務(wù)器抓取注冊信息

 

復(fù)制代碼 代碼如下:

com.netflix.discovery.shared.transport.transportexception: cannot execute request on any known server

 

增加如下配置啟動時(shí)便不會再出現(xiàn)該異常

?
1
2
3
4
eureka:
 client:
  registerwitheureka: false
  fetchregistry: false

registerwitheureka 聲明是否將自己的信息注冊到eureka服務(wù)器,默認(rèn)值為true。

fetchregistry 聲明是否到eureka服務(wù)器中抓取注冊信息,默認(rèn)值為true。

在瀏覽器中訪問 http://localhost:8761 查看eureka控制臺 輸入圖片說明

Spring Cloud構(gòu)建Eureka應(yīng)用的方法

創(chuàng)建服務(wù)提供者

依賴

?
1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
  <groupid>org.springframework.cloud</groupid>
  <artifactid>spring-cloud-starter-config</artifactid>
</dependency>
<dependency>
  <groupid>org.springframework.cloud</groupid>
  <artifactid>spring-cloud-starter-eureka</artifactid>
</dependency>
<dependency>
  <groupid>org.springframework.cloud</groupid>
  <artifactid>spring-cloud-starter-ribbon</artifactid>
</dependency>

在 application.yml 中配置端口、eureka實(shí)例名稱和eureka服務(wù)地址

?
1
2
3
4
5
6
7
8
9
10
11
server:
 port: 8080
spring:
 application:
  name: ek-provider
eureka:
 instance:
  hostname: localhost
 client:
   serviceurl:
    defaultzone: http://localhost:8761/eureka/

創(chuàng)建一個(gè) rest 服務(wù)

?
1
2
3
4
5
6
7
8
@restcontroller
public class hellocontroller {
 
  @requestmapping("/hello")
  public string hello(httpservletrequest request) {
    return "hello:" + request.getrequesturl();
  }
}

開啟eureka客戶端注解 @enableeurekaserver

?
1
2
3
4
5
6
7
8
@enableeurekaclient
@springbootapplication
public class ekproviderapplication {
  public static void main(string[] args) {
    new springapplicationbuilder(ekproviderapplication.class).run(args);
 
  }
}

啟動之后在 eureka 控制臺可以看到服務(wù)提供者已經(jīng)在 eureka 中注冊

Spring Cloud構(gòu)建Eureka應(yīng)用的方法

創(chuàng)建服務(wù)調(diào)用者

依賴

?
1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
  <groupid>org.springframework.cloud</groupid>
  <artifactid>spring-cloud-starter-config</artifactid>
</dependency>
<dependency>
  <groupid>org.springframework.cloud</groupid>
  <artifactid>spring-cloud-starter-eureka</artifactid>
</dependency>
<dependency>
  <groupid>org.springframework.cloud</groupid>
  <artifactid>spring-cloud-starter-ribbon</artifactid>
</dependency>

在 application.yml 中配置端口、eureka實(shí)例名稱和eureka服務(wù)地址

?
1
2
3
4
5
6
7
8
9
10
11
server:
 port: 9000
spring:
 application:
  name: ek-invoke
eureka:
 instance:
  hostname: localhost
 client:
   serviceurl:
    defaultzone: http://localhost:8761/eureka/

編寫一個(gè) rest 服務(wù) 調(diào)用服務(wù)提供者的 “/hello”

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@restcontroller
@configuration
public class invokecontroller {
 
  @bean
  @loadbalanced
  public resttemplate getresttemplate() {
    return new resttemplate();
  }
 
  @requestmapping("/invoke")
  public string invoke() {
    resttemplate resttemplate = getresttemplate();
    return resttemplate.getforobject("http://ek-provider/hello", string.class);
  }
}

在傳統(tǒng)模式中,我們通常會用apache中的httpclient來調(diào)用 rest 服務(wù),在這里我們使用 spring 提供調(diào)用 rest 服務(wù)的組件 resttemplate。 resttemplate 本身并不具備調(diào)用分布式服務(wù)的能力,但是resttemplate的bean被@loadbalanced注解修飾后,這個(gè)resttemplate實(shí)例就具有訪問分布式服務(wù)的能力,這得益于 spring 為其提供的各種攔截器

開啟eureka客戶端注解 @enableeurekaserver

?
1
2
3
4
5
6
7
8
@enableeurekaclient
@springbootapplication
public class ekinvokeapplication {
 
  public static void main(string[] args) {
    new springapplicationbuilder(ekinvokeapplication.class).run(args);
  }
}

啟動之后在 eureka 控制臺可以看到服務(wù)調(diào)用者已經(jīng)在 eureka 中注冊

之后在瀏覽器訪問服務(wù)調(diào)用者的 “invoke” 接口 返回如下

Spring Cloud構(gòu)建Eureka應(yīng)用的方法

總結(jié)

eureka 服務(wù)器 通過心跳鏈接來維護(hù)最新的注冊信息,這些注冊信息都保存在內(nèi)存中。

eureka 服務(wù)提供者 主要進(jìn)行:

  1. 向 eureka 服務(wù)器注冊服務(wù)
  2. 發(fā)送心跳到 eureka服務(wù)器,使 eureka 服務(wù)器注冊信息保持最新
  3. 向服務(wù)器獲取最新的注冊列表,通常 eureka 客戶端既是服務(wù)提供者也是服務(wù)調(diào)用者,但其主要職責(zé)為服務(wù)提供。

eureka 服務(wù)調(diào)用者 主要進(jìn)行:

  1. 向 eureka 服務(wù)器注冊服務(wù)
  2. 發(fā)送心跳到 eureka服務(wù)器,使 eureka 服務(wù)器注冊信息保持最新
  3. 向服務(wù)器獲取最新的注冊列表,通常 eureka 客戶端既是服務(wù)提供者也是服務(wù)調(diào)用者,但其主要職責(zé)為發(fā)現(xiàn)與調(diào)用。

源碼地址:https://github.com/xc564864894/springcloud/tree/master/eureka(%e4%b8%80)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://my.oschina.net/u/3444403/blog/1627531

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 1024免费永久福利视频 | 国产激情久久久久影院小草 | 无码人妻少妇色欲AV一区二区 | 91色香sxmv最网页版新地址 | 亚洲性视频在线观看 | 91在线精品国产丝袜超清 | 法国老妇性xx在线播放 | 精品国产品在线18年 | 欧美一区二区三区四区在线观看 | 久久综合久久伊人 | 特黄a级三级三级野战 | 放荡的女老板bd中文字幕 | 99热这里有免费国产精品 | 精品国产91久久久久 | 亚洲国产精品嫩草影院永久 | h网站国产| 国产在线拍 | 亚洲国产影院 | japanhd粗暴video | 亚洲精品国产综合久久一线 | 日韩在线免费播放 | voyeur 中国女厕 亚洲女厕 | 爸爸的宝贝小说全文在线阅读 | 免费观看在线永久免费xx视频 | 五月天色网站 | 欧美一区二区三区成人看不卡 | 91视频免费网站 | 欧美精品99 | 黑人巨大vs北条麻妃在线 | 免费在线观看网址大全 | 污污的动态图合集 | 欧洲男同直粗无套播放视频 | 洗濯屋动漫在线观看 | 超兴奋朋友的中文字幕下 | 99久久精品国产免看国产一区 | 亚洲a在线视频 | 国内精品视频一区二区三区八戒 | 齐天大性之七仙女欲春迅雷链接 | 放荡女小洁的性日记 | 日本在线播放 | 日本免费高清在线 |