SpringCloud:一次小學生野餐

小時候出去春游嘹锁,大家都會分工合作葫录,有人帶水,有人帶主食领猾,有人帶零食米同,有人帶工具等等。

小朋友多了管理就是個麻煩事了摔竿,有時候一個老師還管理不過來面粮。

微服務也是這么一個概念,每個服務負責自己的事拯坟;但是當服務多了但金,協(xié)調服務就是個麻煩事了。

SpringCloud就是為了解決這一問題而誕生的郁季。

注冊中心

誰來了冷溃,誰不在,他都知道梦裂;他會給你一個通信錄似枕,這樣你就可以聯(lián)系到所有人。

服務注冊中?本質上是為了解耦服務提供者和服務消費者年柠。

消費者和提供者的角色是互相轉換的凿歼,實際上下圖的消費者和提供者都是微服務。當他成為消費者要找服務的時候,他能知道服務的地址答憔。


主流的:Zookeeper味赃,Eureka,Nacos虐拓,其他沒用過的就不講了心俗。

Zookeeper:依靠監(jiān)聽實現(xiàn);Zookeeper本質就是?存儲 + 監(jiān)聽通知蓉驹;依靠消費端創(chuàng)建節(jié)點來監(jiān)聽注冊進來的服務城榛。

Eureka:依靠心跳包實現(xiàn);需要有Eureka Server微服務模塊态兴,其他的微服務作為(提供者和消費者都是客戶端)Eureka Client狠持,啟動時去注冊,Eureka Client會向Eureka Server發(fā)送心跳包瞻润,續(xù)約的同時拉取注冊中心信息(默認30s喘垂,超過90s沒續(xù)約,將會剔除服務)敢订;Eureka已經不更新了王污。是Netflix的產品罢吃。

Nacos:原理和Eureka差不多也是通過心跳包楚午,但是多了配置中心功能,操作更簡單尿招;目前最好用的矾柜,注冊中心+配置中心的功能。

除了單個的服務就谜,還有集群服務怪蔑,我覺得主要還是為了集群服務,單個服務可以直接寫配置文件里丧荐。

網(wǎng)關

你只需要問他你們組誰帶了鍋缆瓣?他就會把那個帶鍋的小朋友找出來;和注冊中心不一樣虹统,網(wǎng)關會幫你找到弓坞,而不是自己去找。

網(wǎng)關和負載均衡一樣也是反向代理车荔,網(wǎng)關是按功能路由渡冻,負載均衡是按性能分發(fā)。如果只是路由的話自己寫都行忧便,SpringCloud插件功能一定不止這點族吻。

Spring Cloud GateWay它基于Spring5.0+SpringBoot2.0+WebFlux,除了路由還能攔截。


看上去和注冊中心差不多超歌,都是找服務的砍艾;由于網(wǎng)關的反向代理,可以使用同一個端口去訪問整個微服務巍举。感覺像nginx就能做的事辐董;nginx是在服務器上的,網(wǎng)關是在項目里的禀综,如果又多個項目要部署在同一個服務器上nginx就不夠用了简烘,而且也不好修改。

還有過濾器功能定枷,

網(wǎng)關要不要依靠注冊中心工作孤澎?

路由到集群又是怎么工作的?

網(wǎng)關項目為什么要和主項目平級欠窒?因為gateway和web包沖突覆旭,需要引用webflux;如果有沖突要剔除web包岖妄。

分布式配置中心

有些東西大家都要用的型将,就交給他拿。nacos包含配置中心荐虐。點擊發(fā)布可以直接刷新配置七兜。

消息總線

通知所有微服務,像廣播一樣福扬。

除了用來刷新配置還能干嘛腕铸?網(wǎng)上大多也是拿來刷新spring cloud config 配置中心,但是現(xiàn)在用nacos铛碑,自帶配置中心狠裹。

發(fā)現(xiàn)其他用處再更新//todo

消息驅動總線

消息隊列專家,無差別的使用任何消息隊列汽烦。

Spring Cloud Stream 消息驅動組件幫助我們更快速涛菠,更?便,更友好的去構建消息驅動微服務的

就像Hibernate屏蔽掉了具體數(shù)據(jù)庫的差異(Mysql和Oracle)撇吞,Spring Cloud Stream也屏蔽掉了消息隊列的差異(RabbitMQ和Kafka)俗冻。

使用消息隊列可以優(yōu)化性能,創(chuàng)建一個緩沖區(qū)梢夯,服務器處理不了的消息就可以先去隊列排隊言疗,而不至于直接卡死,等服務器空閑了颂砸,再去隊列拉取消息噪奄;就是常說的削峰填谷死姚。

熔斷器

負責安全,將受傷的小朋友帶到安全的地方勤篮。

SpringCloud兩個熔斷器插件比較

Hystrix(豪豬)

1)??搭建監(jiān)控平臺 dashboard

2)沒有提供UI界?進?服務熔斷都毒、服務降級等配置(?是寫代碼,?侵了我們源程序環(huán)境)

Sentinel(哨兵)

1)獨?可部署Dashboard/控制臺組件

2)減少代碼開發(fā)碰缔,通過UI界?配置即可完成細粒度控制(?動投遞微服務)

Hystrix需要自己搭建項目账劲,Sentinel只需要引入Jar包,還自帶UI金抡;方便很多瀑焦。

sentinel怎么使用?

java -jar sentinel-dashboard-(版本號).jar &


使用8080端口訪問


賬號密碼都是sentinel

項目需要引入sentinel包梗肝,在網(wǎng)關模塊引入就可以管理所有連接了榛瓮。


配置文件加上,spring-cloud標簽下


界面巫击,需要接口被調用過才會出現(xiàn)


QPS是什么禀晓?

QPS:(每秒鐘請求數(shù)量)當調?該資源的QPS達到閾值時進?限流

負載均衡

把工作平均分配。主要就那幾種分配方式坝锰。nginx也可以做負載均衡粹懒,還有其他的很多工具都可以,為什么要用Ribbon顷级?

應該是歷史原因:之前Eureka和Ribbon是配套使用凫乖。

Ribbon利?從Eureka中讀取到服務信息,在調?服務提供者提供的服務時愕把,會根據(jù)?定的算法進?負載拣凹。

Ribbon和Nginx處理負責均衡的方式不同:

Nginx是服務端選擇一個好的服務器給你連接,Ribbon則是在客戶端選好服務器在連接恨豁。

一個負載均衡算法在服務端執(zhí)行,一個負載均衡算法在客戶端執(zhí)行爬迟。


Ribbon的幾種策略

RoundRobinRule:輪詢策略

默認超過10次獲取到的server都不可?橘蜜,會返回?個空的server

RandomRule:隨機策略

如果隨機到的server為null或者不可?的話,會while不停的循環(huán)選取

RetryRule:重試策略

?定時限內循環(huán)重試付呕。默認繼承RoundRobinRule计福,也?持?定義注?,RetryRule會在每次選取之后徽职,對選舉的server進?判斷象颖,是否為null,是否alive姆钉,并且在500ms內會不停的選取判斷说订。?RoundRobinRule失效的策略是超過10次抄瓦,RandomRule是沒有失效時間的概念,只要serverList沒都掛陶冷。

BestAvailableRule:最?連接數(shù)策略

遍歷serverList钙姊,選取出可?的且連接數(shù)最?的?個server。該算法??有?個LoadBalancerStats的成員變量埂伦,會存儲所有server的運?狀況和連

接數(shù)煞额。如果選取到的server為null,那么會調?RoundRobinRule重新選取沾谜。1(1) 2(1)3(1)

AvailabilityFilteringRule:可?過濾策略

擴展了輪詢策略膊毁,會先通過默認的輪詢選取?個server,再去判斷該server是否超時可?基跑,當前連接數(shù)是否超限媚媒,都成功再返回。

ZoneAvoidanceRule:區(qū)域權衡策略(默認策略)

擴展了輪詢策略涩僻,繼承了2個過濾器:ZoneAvoidancePredicate和AvailabilityPredicate缭召,除了過濾超時和鏈接數(shù)過多的server,還會過濾掉不符合要求的zone區(qū)域??的所有節(jié)點逆日,AWS --ZONE 在?個區(qū)域/機房內的服務實例中輪詢

遠程調用

小朋友直接傳話的技術嵌巷。feign和dubbo就像手機和對講機一樣。

模塊和模塊之間的方法調用室抽。

Feign:是Netflflix開發(fā)的?個輕量級RESTful的HTTP服務客戶端(?它來發(fā)起請求搪哪,遠程調?的),是以Java接?注解的?式調?Http請求坪圾,?不?像Java中通過封裝HTTP請求報?的?式直接調?晓折,F(xiàn)eign被?泛應?在Spring Cloud 的解決?案中。

Dubbo:是基于RPC的兽泄,性能上就比基于HTTP的Feign快漓概。不需要通過controller層來調用。私人定制和模板貨(RPC和Http的區(qū)別)

//todo? dubbo原理解析

通過中間模塊創(chuàng)建接口病梢,然后實現(xiàn)模塊和引用模塊都調用中間模塊的接口胃珍;實現(xiàn)模塊的@Service需要使用dubbo的注解;controller調用需要用@Reference注解蜓陌,而不是@Autowired觅彰。

鏈路追蹤

記錄大家工作,是誰犯錯了钮热,他都清楚填抬。

說白了就是記錄日志和分析日志。

Sleuth +Zipkin

Spring Cloud Sleuth (追蹤服務框架)可以追蹤服務之間的調?隧期,Sleuth可以記錄?個服務請求經過哪些服務飒责、服務處理時?等赘娄,根據(jù)這些,我們能夠理清各微服務間的調?關系及進?問題追蹤分析读拆。

Trace(蹤跡):一次請求

Trace ID:一次請求的id擅憔,整個鏈的id

Span(跨度) ID:請求到達模塊時的id,每次調用內部接口生成一個id

通過span的時間戳判斷調用延遲檐晕。span之間的時間戳相減暑诸。

不會全部采集分析,抽樣采集辟灰,可以配置比例个榕。全部分析太消耗性能了。

Zipkin(記錄日志)

端口9411芥喇,可以直接查看西采。

包括Zipkin Server和 Zipkin Client兩部分,Zipkin Server是?個單獨的服務继控,Zipkin Client就是具體的微服務械馆。

保存在數(shù)據(jù)庫中。


一個分析一個記錄武通。

具體使用//tido

統(tǒng)一認證

工牌霹崎,證明你可以和小朋友說話。

Spring Cloud OAuth2 +JWT

OAuth(開放授權)是?個開放協(xié)議/標準冶忱,允許?戶授權第三?應?訪問他們存儲在另外的服務提供者上的信息尾菇,?不需要將?戶名和密碼提供給第三?應?或分享他們數(shù)據(jù)的所有內容。

JWT是一種加密規(guī)則囚枪,將token和驗證信息加密后一起發(fā)送派诬,然后直接在微服務模塊自行驗證;而不需要拿到token之后再次調用OAuth的方法來驗證链沼。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末默赂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子忆植,更是在濱河造成了極大的恐慌放可,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朝刊,死亡現(xiàn)場離奇詭異,居然都是意外死亡拾氓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門底哥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咙鞍,“玉大人房官,你說我怎么就攤上這事⌒蹋” “怎么了翰守?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疲酌。 經常有香客問我蜡峰,道長,這世上最難降的妖魔是什么朗恳? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任湿颅,我火速辦了婚禮,結果婚禮上粥诫,老公的妹妹穿的比我還像新娘油航。我一直安慰自己,他們只是感情好怀浆,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布谊囚。 她就那樣靜靜地躺著,像睡著了一般执赡。 火紅的嫁衣襯著肌膚如雪镰踏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天搀玖,我揣著相機與錄音余境,去河邊找鬼。 笑死灌诅,一個胖子當著我的面吹牛芳来,可吹牛的內容都是我干的。 我是一名探鬼主播猜拾,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼即舌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挎袜?” 一聲冷哼從身側響起顽聂,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盯仪,沒想到半個月后紊搪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡全景,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年耀石,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爸黄。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡滞伟,死狀恐怖揭鳞,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情梆奈,我是刑警寧澤野崇,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站亩钟,受9級特大地震影響乓梨,放射性物質發(fā)生泄漏。R本人自食惡果不足惜径荔,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一督禽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧总处,春花似錦狈惫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荸频,卻和暖如春菱肖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旭从。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工稳强, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人和悦。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓退疫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鸽素。 傳聞我的和親對象是個殘疾皇子褒繁,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容