您的位置:首頁 > 軟件教程 > 教程 > 服務的提供者和消費者及Eureka注冊中心

服務的提供者和消費者及Eureka注冊中心

來源:好特整理 | 時間:2024-05-03 18:46:24 | 閱讀:187 |  標簽: T 注冊 T3 Eureka Ri K S C in 開發(fā) 服務 新版 消費者   | 分享到:

服務的提供者和消費者 服務之間可以通過Spring提供的RestTemplate來進行http請求去請求另一個Springboot的項目,這就叫做服務間的遠程調(diào)用。 當一個服務通過遠程調(diào)用去調(diào)用另一個服務時,被調(diào)用的服務就叫做服務的提供者,調(diào)用服務的服務就叫做服務的消費者。 一個服務可以既是服務的提

服務之間可以通過Spring提供的RestTemplate來進行http請求去請求另一個Springboot的項目,這就叫做服務間的遠程調(diào)用。當一個服務通過遠程調(diào)用去調(diào)用另一個服務時,被調(diào)用的服務就叫做服務的提供者,調(diào)用服務的服務就叫做服務的消費者。一個服務可以既是服務的提供者也是服務的消費者。

服務調(diào)用關系:

  • 服務提供者: 暴露接口給其它微服務調(diào)用
  • 服務消費者: 調(diào)用其它微服務提供的接口
  • 提供者和消費者的角色其實是相對的

Eureka注冊中心

  • 遠程調(diào)用的問題

  • eureka原理

  • 搭建eurekaServer

  • 服務注冊

  • 服務發(fā)現(xiàn)

eureka的作用:

  • 消費者該如何獲取服務提供者的具體信息
    1. 服務提供者啟動時向eureka注冊自己的信息
    2. eureka保存這些信息
    3. 消費者根據(jù)服務名稱向eureka拉取提供者信息
  • 如果有多個服務提供者,消費者該如何選擇
    1. 服務消費者利用負載均衡算法,從服務列表中挑選一個
  • 消費者如何感知服務提供者健康狀態(tài)
    1. 服務提供者會每隔30s向EurekaServer發(fā)送心跳請求,報告健康狀態(tài)
    2. eureka會更新記錄服務列表信息,心跳不正常會被剔除
    3. 消費者就可以拉取到最新的信息

在eureka架構中,微服務角色有兩類:

  • EurekaServer:服務端、注冊中心
    1. 記錄服務信息
    2. 心跳監(jiān)控
  • EurekaClient:客戶端
    1. provider:服務提供者
      1. 注冊自己的信息到EurekaServer中
      2. 每隔30S向EurekaServer發(fā)送心跳
    2. consumer:服務消費者
      1. 根據(jù)服務名稱從EurekaServer拉取服務列表
      2. 基于服務列表做負載均衡,選中一個微服務后發(fā)起遠程調(diào)用

EurekaServer服務注冊

  • 創(chuàng)建eureka服務端

父工程引入對應版本的springcloud依賴

springboot 3.1.5對應


    org.springframework.cloud
    spring-cloud-dependencies
    2022.0.4
    pom
    import

引入eureka服務端依賴


    
        org.springframework.cloud
        spring-cloud-starter-netflix-eureka-server
    

啟動eureka服務,在啟動類上添加@EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

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

}

配置文件中配置服務名稱-地址-服務端口

spring:
  application:
    name: eureka-server #微服務名稱
server:
  port: 10086 #服務端口
eureka:
  client:
    service-url: #eureka地址信息 eureka自己也是一個微服務,也會被注冊到eureka中 為了做eureka集群
      defaultZone: http://127.0.0.1:10086/eureka

eureka服務端自己也會被注冊到eureka服務中

然后就可以訪問http://127.0.0.1:10086進入eureka注冊中心了

  • 服務注冊

確保父工程成功引入cloud依賴后引入eureka服務端依賴


    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client


在配置文件中配置eureka服務名稱和地址即可

server:
  port: 8081
spring:
  application:
    name: cloud-user
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
  • 服務發(fā)現(xiàn)

引入依賴


    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client


配置地址

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

給RestTemplate添加上@LoadBalanced注解,實現(xiàn)同一服務多個地址的負載均衡調(diào)用

//RestTemplate spring提供的遠程調(diào)用模塊 允許發(fā)送http請求
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}

使用RestTemplate不通過具體的ip地址而是通過服務名稱遠程調(diào)用實現(xiàn)查詢

@Autowired
RestTemplate restTemplate;
@GetMapping("/order/all/{id}")
public ordersUser getAllById(@PathVariable("id") Integer id){
    String str1 = "http://cloud-order/order/"+id;
    orders od = restTemplate.getForObject(str1, orders.class);
    String str = "http://cloud-user/user/"+od.getOrderuserid();
    user forObject = restTemplate.getForObject(str, user.class);
    ordersUser ordersUser = new ordersUser();

    ordersUser.setOrderid(od.getOrderid());
    ordersUser.setUser(forObject);
    ordersUser.setOrdername(od.getOrdername());
    ordersUser.setOrderaddress(od.getOrderaddress());
    ordersUser.setOrderprice(od.getOrderprice());
    ordersUser.setOrdernumber(od.getOrdernumber());

    return ordersUser;
}
小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認同期限觀點或證實其描述。

t3 1.24.823769
t3 1.24.823769
類型:飛行射擊  運營狀態(tài):正式運營  語言:中文   

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動

T3安卓版是一款快節(jié)奏、易上手的3V3多英雄射擊游戲。游戲?qū)⑼婕規(guī)胍粋充滿未來科技感的戰(zhàn)場,玩家可以
RPG Ri序章 0.2.1
RPG Ri序章 0.2.1
類型:角色扮演  運營狀態(tài):正式運營  語言: 日文  

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動

《RPG_Ri序章》是GameMaker'Child-Dream'制作的一款幻想廢土風RPG手游,完全免費的幻想廢土風RPG登場!元

相關視頻攻略

更多

掃二維碼進入好特網(wǎng)手機版本!

掃二維碼進入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)