Eureka注冊中心

遠(yuǎn)程調(diào)用的問題

  • 服務(wù)消費者該如何獲取服務(wù)提供者的地址信息?
  • 有多個服務(wù)提供者,消費者該如何選擇?
  • 消費者如何得知服務(wù)提供者的健康狀態(tài)?

Eureka的作用

  • 服務(wù)端 :eureka注冊中心,記錄和管理各種服務(wù)
  • 客戶端:微服務(wù)
  1. 每個微服務(wù)啟動時會把自己的信息注冊給eureka
  2. 消費者根據(jù)服務(wù)名稱從eureka拉取提供者信息
  3. 消費者用負(fù)載均衡挑選一個提供者服務(wù)。向提供者發(fā)請求。
  • 服務(wù)每隔30秒都會向eureka發(fā)送一次心跳來確認(rèn)自己的狀態(tài),eureka會將不健康的服務(wù)從列表中剔除

搭建注冊中心

  1. 引入eureka-server依賴
<!--eureka服務(wù)器-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. 添加@EnableEurekaServer注解,自動裝配eureka
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}
  1. 在application.yml中配置eureka地址,做服務(wù)注冊
server:
  port: 10086 #服務(wù)端口
spring:
  application:
    name: eurekaserver #eureka的服務(wù)名稱
eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka
  1. 啟動main方法


    image.png

服務(wù)注冊

將user-service服務(wù)注冊到EurekaService:

  1. 在user-service項目引入依賴
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. 在application.yml中配置
spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka/
  1. 同樣配置order-service,重啟服務(wù)之后,可以看到eureka注冊了三個服務(wù)


    image.png

模擬多實例部署

可以將user-service多次啟動,模擬多實例部署,但為了避免端口沖突,需要修改端口配置


image.png

image.png

啟動服務(wù),會發(fā)現(xiàn)eureka里面會出現(xiàn)服務(wù)注冊列表


image.png

服務(wù)發(fā)現(xiàn)

在order-service完成服務(wù)拉取

服務(wù)拉取是基于服務(wù)名稱獲取服務(wù)列表,然后再對列表做負(fù)載均衡。

  1. 訪問的url路徑用服務(wù)名代替ip,端口
//String url = "http://localhost:8081/user/" + order.getUserId();
String url = "http://userservice/user/" + order.getUserId();
  1. 在order-service項目的啟動類OrderApplication中的RestTemplate添加負(fù)載均衡注解
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
  1. 重啟order-service,調(diào)用,查看user-service日志,會發(fā)現(xiàn)order-service負(fù)載均衡調(diào)用了user-service
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、遠(yuǎn)程調(diào)用出現(xiàn)的問題 1、 服務(wù)消費者該如何獲取服務(wù)提供者的地址信息?2、如果有多個服務(wù)提供者,消費者該如何選擇...
    衛(wèi)盾閱讀 370評論 0 1
  • 系統(tǒng)架構(gòu)迭代過程 隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用的規(guī)模不斷擴大,需求的激增,帶來了系統(tǒng)架構(gòu)的升級、迭代。經(jīng)歷了 單一應(yīng)...
    So_ProbuING閱讀 675評論 0 2
  • 一、Eureka的基礎(chǔ)架構(gòu) Spring Cloud 封裝了 Netflix 公司開發(fā)的 Eureka 模塊來實現(xiàn)...
    努力努力再努力_y閱讀 971評論 0 0
  • Eureka 目的 通過這個服務(wù)來看eureka注冊中心的效果。 復(fù)習(xí)Spring Boot。 減少了大量配置???..
    kingTao_閱讀 639評論 0 1
  • 本篇文章為系列文章,未讀第一集的同學(xué)請猛戳這里:Spring Cloud 系列之 Netflix Eureka 注...
    哈嘍沃德先生閱讀 336評論 0 1

友情鏈接更多精彩內(nèi)容