初識springcloud

springcloud

eureka

eureka的作用

消費者該如何獲取服務提供者具體信息?

服務提供者啟動時向eureka注冊自己的信息,eureka保存這些信息消費者,根據服務名稱向eureka拉取提供者信息

如果有多個服務提供者,消費者該如何選擇?

服務消費者利用負載均衡算法,從服務列表中挑選一個消費者如何感知服務提供者健康狀態?

eureka配置

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
server:port: 10086
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/
Ribbon負載均衡原理

IRule是指定負載均衡的策略

image-20240524190011385

通過定義IRule實現可以修改負載均衡規則,有兩種方式:

1.代碼方式:在order-service中的OrderApplication類中,定義一個新的lRule:

@BeanpublicIRulee randomRule(){return newRandomRule();
}

2.配置文件方式:在order-service的application.yml文件中

添加新的配置也可以修改規則:

userservice:ribbon:NFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRule # 負載均衡規則NFLoadBalancerRuleClassName:com.alibaba.cloud.nacos.ribbon.NacosRule # nacos的負載均衡規則
饑餓加載

Ribbon默認是采用懶加載,即第一次訪問時才會去創建LoadBalanceClient,請求時間會很長。

而饑餓加載則會在項目啟動時創建,降低第一次訪問的耗時,通過下面配置開啟饑餓加載:

ribbon:eager-load:enabled:true #開啟饑餓加載clients:- userservice # 指定對userservice這個服務饑餓加載

Nacos

Github地址 https://github.com/alibaba/nacos

window 進入bin目錄后 啟動命令 startup.cmd -m standalone

父工程進入nacok

   <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.5.RELEASE</version><type>pom</type><scope>import</scope></dependency>

客戶端依賴


<!-- nacos客戶端依賴包-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: 集群名稱namespace: 環境的idephemeral: false 設置為非臨時實例
根據權重負載均衡

Nacos控制臺可以設置實例的權重值,0~1之間同集群內的多個實例,權重越高被訪問的頻率越高權重,設置為0則完全不會被訪問

環境隔離

Nacos中服務存儲和數據存儲的最外層都是一個名為namespace的東西,用來做最外層隔離

每個namespace下的服務不可見

統一配置管理
<!-- nacos配置管理客戶端依賴包-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

在userservice中的resource目錄添加一個bootstrap.yml文件,這個文件是引導文件,優先級高于application.yml

spring:application:name:userservice #服務名稱profiles:active:dev #開發環境,這里是devcloud:nacos:server-addr:LocaLhost:8848 #Nacos地址config:file-extension:yam #文件后綴名

配置完之后項目啟動后會去找id是 name+active+file-extension

配置熱更新

在類上面添加注解@RefreshScope或者@ConfigurationProperties注解

@Component@ConfigurationProperties(prefix ="pattern")public class PatternProperties{private String dateformat;}
多環境共享配置
image-20240528230610143
配置優先級

服務名-Rrofile.yaml>服務名稱.yaml>本地配置

Nacos 集群
image-20240529225847375

https://blog.csdn.net/weixin_51265669/article/details/137127998

Nacos與eureka對比

1.Nacos與eureka的共同點

  • 都支持服務注冊和服務拉取
  • 都支持服務提供者心跳方式做健康檢測

2.Nacos與Eureka的區別

  • Nacos支持服務端主動檢測提供者狀態:臨時實例采用心跳模式,非臨時實例采用主動檢測模式
  • 臨時實例心跳不正常會被剔除,非臨時實例則不會被剔除
  • Nacos支持服務列表變更的消息推送模式,服務列表更新更及時
  • Nacos集群默認采用AP方式,當集群中存在非臨時實例時,采用CP模式;Eureka采用AP方式

Feign

image-20240530200726626

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
@Feignclient("userservice")
public interface UserClient {@GetMapping("/user/{id}")User findById(@PathVariable("id") Long id);
}
自定義配置

image-20240530203914788

image-20240530204158949

image-20240530204405336

feign的性能優化

image-20240530204755137

Gateway

image-20240530205920789
<!--網關依賴--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服務發現依賴-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

image-20240530212532393

路由斷言工廠

image-20240530213538474

過濾器工廠

image-20240530215419974

如果要對所以路由都生效,則可以把過濾工廠寫到default下

全局過濾器

全局過濾器GlobalFilter全局過濾器的作用也是處理一切進入網關的請求和微服務響應,與GatewayFilter的作用一樣。區別在于GatewayFilter通過配置定義,處理邏輯是固定的。而GlobalFilter的邏輯需要自己寫代碼實現。

image-20240530215955310

image-20240530221004354

當過濾器的order值一樣時,會按照defaultFilter>路由過濾器>GlobalFilter的順序執行。

跨域配置

image-20240530221620513

而GlobalFilter的邏輯需要自己寫代碼實現。
image-20240530221004354

當過濾器的order值一樣時,會按照defaultFilter>路由過濾器>GlobalFilter的順序執行。

跨域配置

image-20240530221620513

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22003.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

創建模塊

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;自定義模塊有兩個作用&#xff1a;一個是規范代碼&#xff0c;讓代碼更易于閱讀&#xff0c;另一個是方便其他程序使用已經編…

ORACLE創建dblink

dblink的作用 dblink數據庫鏈接顧名思義就是數據庫的鏈接&#xff0c;當我們要跨本地數據庫&#xff0c;訪問另外一個數據庫表中的數據時&#xff0c;本地數據庫中就必須要創建遠程數據庫的dblink&#xff0c;通過dblink本地數據庫可以像訪問本地數據庫一樣訪問遠程數據庫表中…

Ubuntu22.04之解決:terminal使用alt+1/alt+2/alt+3失效問題(二百三十八)

簡介&#xff1a; CSDN博客專家&#xff0c;專注Android/Linux系統&#xff0c;分享多mic語音方案、音視頻、編解碼等技術&#xff0c;與大家一起成長&#xff01; 優質專欄&#xff1a;Audio工程師進階系列【原創干貨持續更新中……】&#x1f680; 優質專欄&#xff1a;多媒…

安卓玩機搞機技巧綜合資源----電腦控制手機 投屏操控的軟件工具操作步驟解析【二十二】

接上篇 安卓玩機搞機技巧綜合資源------如何提取手機分區 小米機型代碼分享等等 【一】 安卓玩機搞機技巧綜合資源------開機英文提示解決dm-verity corruption your device is corrupt. 設備內部報錯 AB分區等等【二】 安卓玩機搞機技巧綜合資源------EROFS分區格式 小米紅…

外發郵件監控的六種方法, 監控軟件如何防止郵件泄密?

外發郵件監控的六種方法&#xff0c; 監控軟件如何防止郵件泄密&#xff1f; 外發郵件監控是現代企業信息安全管理的重要組成部分&#xff0c;它有助于防止敏感信息泄露、保護知識產權、以及確保企業合規。以下是外發郵件監控的幾種主要方法&#xff0c;這些方法結合使用可以為…

2024最新 Jenkins + Docker實戰教程(八)- Jenkins實現集群并發構建

&#x1f604; 19年之后由于某些原因斷更了三年&#xff0c;23年重新揚帆起航&#xff0c;推出更多優質博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有堅忍不拔之志 &#x1f390; 個人CSND主頁——Mi…

【Python Cookbook】S01E14 從字典中提取子集

目錄 問題解決方案討論 問題 如果我們想基于一個字典的子集創建另外一個字典&#xff0c;該如何做&#xff1f; 解決方案 利用 字典推導式 來解決問題&#xff1a; prices {ACME: 45.23,AAPL: 612.78,IBM: 205.55,HPQ: 37.20,FB: 10.75 }p1 {key:value for key, value in…

AI學習指南機器學習篇-邏輯回歸損失函數和優化

AI學習指南機器學習篇-邏輯回歸損失函數和優化 引言 在機器學習中&#xff0c;邏輯回歸是一種常用的分類算法。在邏輯回歸中&#xff0c;我們需要定義一個損失函數來衡量模型預測值與實際標簽之間的誤差&#xff0c;并且需要通過優化算法來最小化損失函數&#xff0c;從而得到…

群體優化算法----人工蜂群優化算法應用于路徑規劃(機器人避開平面障礙尋找最短路線)

介紹 人工蜂群優化算法&#xff08;Artificial Bee Colony Algorithm, ABC&#xff09;是由Dervis Karaboga在2005年提出的一種模擬蜜蜂覓食行為的優化算法。該算法基于蜜蜂群體的分工合作和信息交流機制&#xff0c;通過模擬蜜蜂尋找食物源的過程來解決優化問題。ABC算法因其…

netplan網絡配置@ubuntu留檔

ubuntu使用netplan進行網絡配置&#xff0c;簡單又方便。 配置的時候編輯/etc/netplan 目錄里的文件即可&#xff0c;如00-installer-config.yaml文件。 固定ip配置 network:ethernets:enp0s5:dhcp4: noaddresses: [192.168.1.7/24]routes:- to: defaultvia: 192.168.1.1name…

手機和WINDOWS電腦藍牙連接后怎樣放歌,無法選擇媒體音頻 藍牙媒體音頻勾選不上

手機和電腦藍牙連接后怎樣放歌 要將手機通過藍牙連接到電腦并播放音樂&#xff0c;可以按照以下步驟操作&#xff1a; 確保手機和電腦都支持藍牙功能&#xff0c;并且藍牙功能已經開啟。 在電腦上&#xff0c;打開“設置”> “設備”> “藍牙和其他設備”。 點擊“添…

INT202 例題

算法復雜度 O(n)&#xff1a;表示算法的漸進上界。如果一個算法的運行時間是O(n)&#xff0c;那么它的運行時間最多與輸入規模n成正比。換句話說&#xff0c;當輸入規模n增加時&#xff0c;算法的運行時間不會超過某個常數倍的n。比如&#xff0c;如果一個算法的時間復雜度是O(…

打開常用C語言常用內存函數的大門 ——memcmp函數及其模擬實現(完結篇)

文章目錄 1. 前言2. memcmp函數2.1 memcmp函數的原型2.2 memcmp的返回值2.2 memcmp的形參2.3 memcmp函數的使用 3. memcmp函數的模擬實現4. 總結 1. 前言 本文是C語言常用內存函數的最后一個函數 —— memcmp函數。 希望各位觀眾佬爺們能夠學會并靈活的使用這四個常用的內存函…

平板顯示LED背光芯片OC6700,輸入3.6V~60V,升壓型 LED 恒流驅動器

概述 OC6700是一款內置60V功率NMOS高效率、高精度的升壓型大功率LED恒流驅動芯片。OC6700采用固定關斷時間的控制方式&#xff0c;關斷時間可通過外部電容進行調節&#xff0c;工作頻率可根據用戶要求而改變。OC6700通過調節外置的電流采樣電阻&#xff0c;能控制高亮度LED燈的…

如何優化 Java 程序的性能?

優化 Java 程序的性能可以從多個方面入手&#xff0c;以下是一些常見的優化方法&#xff1a; 使用合適的數據結構&#xff1a;選擇合適的數據結構可以提高程序的效率。例如&#xff0c;使用 HashMap 而不是 ArrayList 來存儲大量的鍵值對數據。 減少對象的創建和銷毀&#xff…

Kylin入門教程介紹

Kylin入門教程可以概括為以下幾個主要步驟&#xff1a; 一、Apache Kylin簡介 Apache Kylin是一個開源的分布式分析引擎&#xff0c;它提供Hadoop之上的SQL接口及多維分析&#xff08;OLAP&#xff09;能力&#xff0c;以支持超大規模數據。最初由eBay Inc.開發并貢獻至開源社…

vue2組件封裝+elementUI

1.VUE2圖片上傳封裝 使用 <ImageUpload v-model"picUrl" :fileSize"0" getImg"getImg"></ImageUpload> 封裝代碼 <template><div class"component-upload-image"><el-uploadmultiple:action"uplo…

react 合成事件

React合成事件-CSDN博客 當然&#xff0c;很高興為你解釋React中的合成事件概念&#xff0c;非常適合React初學者理解。 想象一下&#xff0c;你正在組織一場派對&#xff0c;為了讓派對順利進行&#xff0c;你需要管理各種活動&#xff0c;比如游戲、音樂和食物分配。但是&a…

C語言之指針進階(5),sizeof和strlen的數組計算以及指針運算筆試難題詳解

目錄 前言 一、sizeof和strlen 的區分比較 二、sizeof,strlen與數組的計算 三、指針運算&#xff0c;筆試難題解析 總結 前言 本文作為指針進階的最后一篇文章&#xff0c;給大家帶來了豐富的例題&#xff0c;這其中包括區分比較sizeof和strlen計算各種花樣的數組指針表達式…

Redis的SDS數據結構解決C語言字符串缺陷

redis設計了SDS這一數據結構來表示字符串而不是使用c語言的字符串&#xff1a;字符數組 那么redis為什么要大費周章自己設計字符串呢&#xff1f; 答案是C語言字符串有缺陷 1.獲取字符串長度&#xff0c;需要遍歷字符數組&#xff0c;時間復雜度是O&#xff08;N&#xff09…