Spring Cloud Eureka -- 服務(wù)注冊與發(fā)現(xiàn)

Spring Cloud Eureka:封裝于Netflix Eureka, [ju?ri:k?] ,嘆詞(找到了)
功能:服務(wù)注冊,服務(wù)發(fā)現(xiàn),心跳檢測
服務(wù)注冊與發(fā)現(xiàn)的意義:A調(diào)用服務(wù)B,A只需要知道服務(wù)B的服務(wù)名,而不需要知道B具體的多個服務(wù)實例的IP地址

概念
客戶端發(fā)現(xiàn):客戶端掌握所有目標地址,自己選擇請求目標。例如Eureka
服務(wù)端發(fā)現(xiàn):即代理,代理掌握所有目標地址,轉(zhuǎn)發(fā)客戶端請求。例如Nginx,K8S
康威定律:組織溝通方式 會影響 系統(tǒng)設(shè)計

服務(wù)拆分

1、按客戶端拆分
2、按用戶角色拆分
3、按功能模塊拆分(單一職責,高內(nèi)聚,松耦合)

服務(wù)拆分方法論
1、每個服務(wù)有單獨的數(shù)據(jù)存儲

Eureka 原理

角色:Eureka Server(服務(wù)注冊中心)、Eureka Client
Eureka Client:Application Service(服務(wù)提供者)、Application Client(服務(wù)消費者)
服務(wù)注冊:Client 向 Server 注冊
服務(wù)續(xù)約:Client每30秒向Server發(fā)一次心跳,進行服務(wù)續(xù)約
服務(wù)剔除:Server 90秒沒收到Client的心跳
服務(wù)下線:Client 主動通知 Server 進行下線
自我保護模式:當Eureka Server 15分鐘內(nèi)得到的續(xù)約率低于85%,不再剔除服務(wù),因為這時很可能是自己出了問題

Eureka Server 項目構(gòu)建

1、借助IDEA,初始化項目
New Project -> Spring Initializr -> 選擇依賴Cloud Discovery.Eureka Server
2、給主類增加注解 @EnableEurekaServer
3、application.properties 更名為 application.yml

server.port: 8761   # Eureka 的默認端口
spring.application.name: Eureka-Server  # 應(yīng)用名
eureka.client.register-with-eureka: false  # 本節(jié)點 不去 注冊服務(wù)
eureka.client.fetch-registry: false  # 本節(jié)點 不 檢索服務(wù)
eureka.server.enable-self-preservation: false # 在開發(fā)環(huán)境關(guān)閉自我保護機制,避免服務(wù)剔除不及時

4、運行主類 main方法,訪問 localhost:8761

Eureka Client 項目構(gòu)建

1、借助IDEA,初始化項目
New Project -> Spring Initializr -> 選擇依賴Cloud Discovery.Eureka Discovery
檢查spring-cloud版本 是否與 Eureka Server 一致
檢查有沒有依賴 spring-boot-starter-web

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

2、給主類增加注解 @EnableEurekaClient 或 @EnableDiscoveryClient(還適用于consul、zookeeper注冊中心)
3、application.properties 更名為 application.yml

server.port: 8080   # 確保該端口沒被占用
spring.application.name: Eureka-Client # 應(yīng)用名
eureka.client.service-url.defaultZone: http://localhost:8761/eureka/  # 指定注冊中心
eureka.client.fetch-registry: true # 默認就是 true,即從Eureka Server拉取服務(wù)列表(發(fā)現(xiàn)服務(wù)),從而能被Ribbon組件獲取
eureka.instance.prefer-ip-address: true  # 在Eureka Server展示頁面上顯示的鏈接,鏈接到一個IP,而不是域名

4、到 Eureka 檢查是否注冊上

Eureka Server 高可用

1、Eureka Server兩兩注冊,即一個Eureka Server注冊除自己以外的所有Eureka Server,Eureka Server之間會相互同步Client 注冊信息
2、給Client 指定全部注冊中心:eureka.client.service-url.defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/

最后編輯于
?著作權(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)容

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