激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解springcloud之服務注冊與發現

詳解springcloud之服務注冊與發現

2021-05-06 11:44神牛步行3 Java教程

本次分享的是關于springcloud服務注冊與發現的內容,將通過分別搭建服務中心,服務注冊,服務發現來說明,非常具有實用價值,需要的朋友可以參考下

本次分享的是關于springcloud服務注冊發現的內容,將通過分別搭建服務中心,服務注冊,服務發現來說明;現在北京這邊很多創業公司都開始往springcloud靠了,可能是由于文檔和組件比較豐富的原因吧,畢竟是一款目前來說比較完善的微服務架構;本次分享希望能給大家帶來好的幫助;

  1. eureka服務中心
  2. provider注冊服務
  3. consumer發現服務
  4. eureka服務中心高可用

eureka服務中心

就我現在了解到并且用的比較多的注冊中心有zookeeper和eureka,我的上上篇文章分享了dubbo+zookeeper來構建服務,因此本次用的是eureka,springcloud框架也是推薦它來作為注冊中心,當然可以集成其他的服注冊中心,畢竟springcloud依賴于springboot來構建項目的,因此集成其他組件是很快的;首先創建注冊中心項目 eureka_server ,通過如下引入依賴:

?
1
2
3
4
<dependency>
  <groupid>org.springframework.cloud</groupid>
   <artifactid>spring-cloud-starter-eureka-server</artifactid>
</dependency>

然后在application.yml文件中增加配置項:

?
1
2
3
4
5
6
7
8
9
10
11
12
server:
 port: 2001
spring:
 application:
  name: eureka-server
eureka:
 client:
  register-with-eureka: false #禁止自己當做服務注冊
  fetch-registry: false    #屏蔽注冊信息
 instance:
  prefer-ip-address: true
  instance-id: ${spring.application.name}:${server.port}

配置完成后,還需要再啟動類增加注解 @enableeurekaserver ,設置基本完成即可運行,訪問  http: // localhost:2001/ 得到如下界面:

詳解springcloud之服務注冊與發現

provider注冊服務

有了服務注冊中心,我們還需要提供一些服務并且把這些服務注冊到服務中心去,這里為了方便先創建一個服務提供者和消費者共同使用的接口模塊項目 eureka_api ,并創建如下接口和請求返回參數實體類:

?
1
2
3
4
5
6
7
8
public interface userinterface {
 
  @postmapping("/users")
  morp<list<mouser>> getusers(morq rq);
 
  @getmapping("/msg")
  string getmsg();
}

mouser實體:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class mouser {
 
  private long id;
  private string username;
  private string userpwd;
 
  public long getid() {
    return id;
  }
 
  public void setid(long id) {
    this.id = id;
  }
 
  public string getusername() {
    return username;
  }
 
  public void setusername(string username) {
    this.username = username;
  }
 
  public string getuserpwd() {
    return userpwd;
  }
 
  public void setuserpwd(string userpwd) {
    this.userpwd = userpwd;
  }
}

然后創建我們的服務提供端的模塊 eureka_provider ,同樣引入eureka依賴不過和server端有點區別:

?
1
2
3
4
<dependency>
  <groupid>org.springframework.cloud</groupid>
  <artifactid>spring-cloud-starter-eureka</artifactid>
</dependency>

再來創建服務提供端要提供的服務usercontroller,并且實現我們eureka_api模塊中的userinterface接口,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@restcontroller
public class usercontroller implements userinterface {
 
  @autowired
  private httpservletrequest request;
 
  @override
  public morp<list<mouser>> getusers(morq rq) {
 
    morp<list<mouser>> rp = new morp<>();
 
    list<mouser> list = new arraylist<>();
    for (int i = 0; i < 5; i++) {
      mouser mouser = new mouser();
      mouser.setid(i);
      mouser.setusername("神牛" + i);
      list.add(mouser);
    }
    rp.sett(list);
    rp.setstatus(list.size() >= 1 ? 1 : 0);
    rp.setmessage(list.size() >= 1 ? "" : "暫無數據");
    return rp;
  }
 
  @override
  public string getmsg() {
 
    return "這里是provider,端口:"+ request.getserverport();
  }
}

這里需要注意的是controller的兩個服務接口中沒有再加postmapping或getmapping,因為這個由被實現接口申明了;定義好了users和msg服務后,我們還需要能把他們注入到服務注冊中心去,因此需要如下application.yml的配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
spring:
 application:
  name: eureka-provider #服務名稱
eureka:
 client:
  service-url:
   defaultzone: http://localhost:2001/eureka/ #服務中心地址
 instance:
  prefer-ip-address: true
  instance-id: ${spring.application.name}:${server.port}
server:
 port: 2004

我們還需要在啟動類增加如下標記 @enableeurekaclient ,它表示啟動eureka客戶端,因為服務提供者相對服務中心來說是屬于客戶端的存在;當運行eureka_provider項目的時候,我們在注冊中心能看到如下信息:

詳解springcloud之服務注冊與發現

為了保證服務提供端接口沒問題,我們可以直接點擊eureka-provider:2004,然后增加要方法接口的路徑我這里是:http://192.168.153.148:2004/msg,即可得到如下正常訪問接口返回的信息:

詳解springcloud之服務注冊與發現

consumer發現服務

有了接口服務,我們還需要消費服務,因此創建module項目eureka_consumer,因為這里采用fegin偽客戶端的方式來訪問我們服務提供端,并且同樣需要引入eureka的依賴:

?
1
2
3
4
5
6
7
8
<dependency>
  <groupid>org.springframework.cloud</groupid>
  <artifactid>spring-cloud-starter-eureka</artifactid>
</dependency>
<dependency>
  <groupid>org.springframework.cloud</groupid>
  <artifactid>spring-cloud-starter-feign</artifactid>
</dependency>

然后在service層定義userservice服務并且實現公共接口模塊 eureka_api 中的接口,代碼如:

?
1
2
3
@feignclient(value = "eureka-provider")
 public interface userservice extends userinterface {
 }

通過feignclient來指定調用的服務端應用名稱eureka-provider,這名稱對應注冊在服務中心的application目錄下 ,在controller層創建一個響應的輸出usercontroller并分別提供兩個展示的接口,代碼如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@restcontroller
public class usercontroller{
 
  @autowired
  private userservice userservice;
 
  @getmapping("/users")
  public morp<list<mouser>> getusers(morq rq) {
    return userservice.getusers(rq);
  }
 
  @getmapping("/msg")
  public string getmsg() {
    return userservice.getmsg();
  }
}

同樣consumer端也需要在application.yml中配置一些信息:

?
1
2
3
4
5
6
7
8
9
10
11
12
spring:
 application:
  name: eureka-consumer
eureka:
 client:
  service-url:
   defaultzone: http://localhost:2001/eureka/ #注冊中心地址
 instance:
  prefer-ip-address: true
  instance-id: ${spring.application.name}:${server.port}
server:
 port: 2005

配置基本和provider端差不多,最后需要在啟動類申明如下注解:

?
1
2
3
4
5
6
7
8
@springbootapplication
@enablediscoveryclient //消費者客戶端
@enablefeignclients //feign客戶端
public class eurekaconsumerapplication {
  public static void main(string[] args) {
    springapplication.run(eurekaconsumerapplication.class, args);
  }
}

啟動eureka_consumer項目后,我們能在注冊中心看到它注冊進來的信息:

詳解springcloud之服務注冊與發現

然后通過訪問eureka_consumer消費方的接口測試eureka_provider服務提供方的接口數據知否能正常響應,接口地址 http: // 192.168.153.148:2005/msg :

詳解springcloud之服務注冊與發現

通過訪問consumer得到了provider的結果,這就是服務注冊和發現的基本測試流程;至于消費方怎么請求到提供方接口的,我們通過如下手工圖可解:

詳解springcloud之服務注冊與發現

eureka服務中心高可用

由上面手工圖來看,服務中心承擔著很重要的角色,通常這種服務中心不僅僅只搭建一個,因此需要搭建一套高可用的服務中心出來;其實很簡單provider和consumer配置都不用動,我們只需要在第一節點的eureka-server項目的application.yml中配置下并且在多啟動幾個不同端口的服務就行了(同一臺服務器是多個端口,不同服務器端口可能是一樣的):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server:
 port: 2001
spring:
 application:
  name: eureka-server
eureka:
 client:
  register-with-eureka: true  #配置高可用的時候需要開放自己注冊自己
  fetch-registry: true
  service-url:
   defaultzone: http://localhost:2002/eureka/ #注冊到端口2002的eureka中
#   defaultzone: http://localhost:2001/eureka/
 instance:
  prefer-ip-address: true
  instance-id: ${spring.application.name}:${server.port}
 server:
  eviction-interval-timer-in-ms: 2000 #剔除失效服務間隔

高可用配置需要注意以下幾點:

  1. register-with-eureka: true 配置高可用的時候需要開放自己注冊自己,便于多個eureka注冊中心互通
  2. defaultzone:http://localhost:2002/eureka/ 每個注冊中心都需要吧自己注冊到別的注冊中心去

這里我創建了兩個注冊中心地址分別為:http://localhost:2001/,http://localhost:2002/;由于之前provider和consumer配置的注冊中心地址都是2001端口的,為了驗證高可用我們需要訪問2002端口注冊中心,效果如:

詳解springcloud之服務注冊與發現

能夠看到2002端口有著2001端口同樣的注冊信息,當我關閉2001端口的應用時,2002還是能夠查到provider和consumer的信息,更詳細的配置可以參照官網說明。

git地址: https://github.com/shenniubuxing3

nuget 發布包:https://www.nuget.org/profiles/shenniubuxing3

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/wangrudong003/p/9117946.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 草莓视频在线导航 | 久久国产91 | 羞羞电影在线观看 | 久久观看| av电影在线观看免费 | 91av在线免费播放 | av在线免费电影 | 免费看成年人视频在线 | 美女视频黄a视频免费全过程 | 黄色免费电影网址 | 国产交换3p国产精品 | 久久密 | 成人黄色免费视频 | 一区二区三区四区国产精品视频 | 成人啪啪18免费网站 | 美国一级黄色毛片 | 99视频在线观看视频 | 久久精品99久久久久久2456 | 粉嫩蜜桃麻豆免费大片 | 在线看一区二区三区 | 青青草国产在线视频 | 欧美亚洲黄色片 | 久久精品一二三区白丝高潮 | 亚洲一级成人 | 中文字幕在线成人 | 成人羞羞在线观看网站 | 性大片免费看 | 俄罗斯16一20sex牲色另类 | 欧美在线观看视频网站 | 国产精品一区在线免费观看 | 法国性经典xxxhd | 竹内纱里奈55在线观看 | 国产日韩一区二区三区在线观看 | 久久久三级免费电影 | 欧美激情999 | www.91操 | 韩国十九禁高潮床戏在线观看 | 国产69精品久久久久9999不卡免费 | 亚洲av一级毛片特黄大片 | 国产一级性生活视频 | 久久精品a一级国产免视看成人 |