Eureka原理、安全認證粘勒、優(yōu)雅停服

一竞端、Eureka注冊中心架構圖原理

架構圖

? ? Register(服務注冊):把自己的IP和端口注冊給Eureka

? ? Renew(服務續(xù)約):發(fā)送心跳包,每30秒發(fā)送一次庙睡,告訴Eureka自己還活著

? ? Cancel(服務下線):當provider關閉時會向Eureka發(fā)送消息事富,把自己從服務列表中刪除技俐。防止consumer調用到不存在的服務

? ? Get? ? Registry(獲取服務注冊列表):獲取其他服務列表

? ? Replicate(集群中數據同步):eureka集群中的數據復制與同步

? ? Make? ? Remote? ? Call(遠程調用):完成服務的遠程調用

簡圖

二渊胸、CAP原則與兩大主流服務框架ZK潘明、Eureka的對比

? ? 1.CAP原則:CAP原則又稱CAP定理,指的是在一個分布式系統(tǒng)中锨侯,

????????Consistency(一致性)饺谬、

????????Availability(可用性)捂刺、

????????Partition tolerance(分區(qū)容錯性),三者不可兼得

????CAP由Eric? Brewer在2000年PODC會議上提出募寨。該猜想在提出兩年后被證明成立族展,成為我們熟知的CAP定理

CAP定理

? ? 2.分別表示的含義

????????C:數據一致性(Consistency),也叫做數據原子性,系統(tǒng)在執(zhí)行某項操作后仍然處于一致的狀態(tài)拔鹰。在分布式系統(tǒng)中仪缸,更新操作執(zhí)行成功后所有的用戶都應該讀到最新的值,這樣的系統(tǒng)被認為是具有強一致性的列肢。等同于所有節(jié)點訪問同一份最新的數據副本

????????A:服務可用性(Availablity)恰画,每一個操作總是能夠在一定的時間內返回結果,這里需要注意的是“一定時間內”和“返回結果”瓷马。一定時間內指的是拴还,在可以容忍的范圍內返回結果,結果可以是成功或者是失敗

????????P:分區(qū)容錯性(Partition-torlerance)欧聘,在網絡分區(qū)的情況下片林,被分割的節(jié)點仍能對外提供服務(分布式集群,數據被分布存儲在不同的服務器上怀骤,無論什么情況费封,服務器都能正常被訪問)

? ? 3.不同組合的含義

????????CA,放棄P:如果想避免分區(qū)容錯性問題的發(fā)生蒋伦,一種做法是將所有的數據(與事務關的)都放在一臺機器上弓摘。雖然無法100%保證系統(tǒng)不會出錯,但不會碰到由分區(qū)帶來的負面效果凉敲,當然這個選擇會嚴重影響系統(tǒng)的擴展性

????????CP衣盾,放棄A:相對于放棄“分區(qū)容錯性”來說,其反面就是放棄可用性爷抓。一旦遇到分區(qū)容錯故障势决,那么受影響的服務需要等待一定時間,因此在等待時間內系統(tǒng)無法對外提供服務

????????AP蓝撇,放棄C:這里所說的放棄一致性果复,并不是完全放棄數據一致性,而是放棄數據的強一致性渤昌,而保留數據的最終一致性虽抄。以網絡購物為例走搁,對只剩下一件庫存的商品,如果同時接受了兩個訂單迈窟,那么較晚的訂單將被告知商品告罄

? ? ? ? 重要定律:任何分布式系統(tǒng)只可同時滿足其中兩點私植,無法三者兼顧


? ? 4.Zookeeper與Eureka的區(qū)別

區(qū)別

三、Eureka的服務自我保護

????1.自我保護的條件:一般情況下车酣,微服務在Eureka上注冊后曲稼,每30秒會發(fā)送心跳包,Eureka通過心跳來判斷服務是否健康湖员,同時會定期刪除超過90秒沒有發(fā)送心跳的服務

????2.有兩種情況會導致Eureka Server收不到微服務的心跳

????????a.是微服務自身的原因

????????b.是微服務于Eureka之間的網絡故障

????????通常(微服務的自身的故障關閉)只會導致個別服務出現故障贫悄,一般不會出現大面積故障,而(網絡故障)通常會導致Eureka??? Server在短時間內無法收到大批心跳

????????考慮到這個區(qū)別娘摔,Eureka設置了一個閾(yu)值窄坦,當判斷掛掉的服務的數量超過閾(yu)值時,Eureka??????? Server認為很大程度上出現了網絡故障凳寺,將不再刪除心跳過期的服務

????3.那么這個閾(yu)值是多少呢鸭津?

????????15分鐘之內是否低于85%;

????????Eureka? Server在運行期間肠缨,會統(tǒng)計心跳失敗的比例在15分鐘內是否低于85%曙博,這種算法叫Eureka??? Server的自我保護模式

? ? 4.為什么要啟動自我保護?

????????a.因為同時保留“好數據”與“壞數據”總比丟掉任何數據要更好怜瞒,當網絡故障恢復后,這個Eureka節(jié)點會退出“自我保護模式”般哼。

????????b.Eureka還有客戶端緩存功能(也就是微服務的緩存功能)吴汪。即便Eureka集群中所有節(jié)點都宕機失效,微服務的Provider和Consumer都能正常通信

????????c.微服務的負載均衡策略會自動剔除死亡的微服務節(jié)點

? ? 5.關閉自我保護的方式

? ??????修改application.properties/yml全局配置文件

配置文件

四蒸眠、Eureka服務的優(yōu)雅停服

????1.修改pom.xml配置文件漾橙,添加Eureka-Server的依賴

修改pom.xml配置文件

????2.修改application.properties/yml全局配置文件

????????添加:

修改全局配置文件

? ? 3.測試

????????http://Eureka服務所在的IP+端口/shutdown,而且URL必須要使用dopost方式發(fā)送

????????我們可以借助HttpClient工具類來實現

測試類

五楞卡、開啟Eureka安全中心的安全認證

????舊版本配置方式

????1.在Eureka? Server中添加security依賴

添加依賴

????2.修改application.properties/yml全局配置文件

????????開啟htpp basic的安全認證

修改appication.properties霜运,開啟認證

????3.修改訪問集群節(jié)點的url添加配置的用戶名和密碼(必然彼此之間會訪問失敗蒋腮,集群注冊失斕约瘛)

修改配置的用戶名和密碼

? ? 新版本(高版本)配置方式

? ? 1.添加依賴,groupId有所差異

添加Secrity依賴

? ? 2.修改eureka服務全局配置文件(有幾個服務配置幾個)

配置全局文件

? ? 3.新建類添加@Configuration變成SpringBoot配置類池摧,繼承WebSecurityConfigurationAdapter類焦除,重寫configure方法,禁用csrf

禁用csrf

? ? ? ? 注意作彤,一旦開啟安全認證膘魄,需要配置傳遞用戶名和密碼

? ??????修改微服務的配置文件添加訪問注冊中心的用戶名與密碼(每個注冊節(jié)點都要配置)

修改注冊節(jié)點的配置文件

六乌逐、負載均衡Ribbon

? ? 負載均衡在微服務中的作用

? ? 1.Ribbon的概念

????????a.Ribbon是一個基于Http和TCP的客戶端負載均衡工具,他是語句Netflix Ribbon實現的

????????b.它不像spring? cloud服務注冊中心创葡、配置中心浙踢、API網關那樣獨立部署,但是它幾乎存在于每個spring cloud微服務中灿渴。包括feign提供的聲明式服務調用也是基于該Ribbon實現的

????????c.ribbon默認提供很多種負載均衡算法洛波,例如輪詢、隨機等等逻杖,甚至包括自定義的負載均衡算法

????????????????Ribbon解決并提供了微服務的負載均衡的問題

? ? 2.負載均衡方案的分類

????????目前業(yè)界主流的負載均衡方案可分成兩類:

????????第一類:集中式負載均衡奋岁,即在consumer和provider之間使用獨立的負載均衡設施(可以是硬件,如F5荸百,也可以是軟件闻伶,如nginx),由該設置負責把訪問請求通過某種策略轉發(fā)至provider够话;

????????第二類:進程內負載均衡蓝翰,將負載均衡邏輯集成到consumer,consuerm從服務注冊中心獲知由哪些地址可用女嘲,然后自己再從這些地址中選擇出一個合適的provider畜份;

兩種負載均衡方式結構圖

????????Ribbon就屬于后者,它只是一個類庫欣尼,集成于consumer進程爆雹,consumer通過它來獲取到provider的地址。


? ? 3.Ribbon的負載均衡策略

? ? ? ? A.策略名稱:輪詢策略(默認)

????????????對應的類名: RoundRobinRule

? ? ? ? ? ? ? ? 實現原理:輪詢策略表示每次都順序取下一個 provider愕鼓,比如一共有 5 個provider钙态,第 1 次取第 1 個,第 2

次取第 2 個菇晃,第 3 次取第 3 個册倒,以此類推


? ? ? ? B.策略名稱:權重輪詢策略

????????????對應的類名:WeightedResponseTimeRule

? ? ? ? ? ? ? ? 實現原理:

????????????1.根據每個 provider 的響應時間分配一個權重,響應時間越長磺送,權重越小驻子,被選中的可能性越低。

????????????2.原理:一開始為輪詢策略估灿,并開啟一個計時器崇呵,每 30 秒收集一次每個 provider 的平均響應時間,當信息

足夠時甲捏,給每個 provider附上一個權重演熟,并按權重隨機選擇provider,高權越重的 provider會被高概率選中。


? ? ? ? C.策略名稱:隨機策略

????????????對應的類名:RandomRule

? ? ? ? ? ? ? ? 實現原理:從 provider 列表中隨機選擇一個 provider


? ? ? ? D.策略名稱:最少并發(fā)數策略

????????????對應的類名:BestAvailableRule

? ? ? ? ? ? ? ? 實現原理:選擇正在請求中的并發(fā)數最小的 provider芒粹,除非這個provider 在熔斷中


? ? ? ? E.策略名稱:在“選定的負載均 衡策略”基礎上進行重 試機制

????????????對應的類名:RetryRule

? ? ? ? ? ? ? ? 實現原理:

????????????1.“選定的負載均衡策略”這個策略是輪詢策略RoundRobinRule

????????????2.該重試策略先設定一個閾值時間段兄纺,如果在這個閾值時間段內當選擇 provider 不成功,則一直嘗試采用“選定

的負載均衡策略:輪詢策略”最后選擇一個可用的provider


? ? ? ? F策略名稱:可用性敏感策略

????????????對應的類名:AvailabilityFilteringRule

? ? ? ? ? ? ? ? 實現原理:過濾性能差的 provider,有 2種:

????????????第一種:過濾掉在 eureka 中處于一直連接失敗 provider

????????????第二種:過濾掉高并發(fā)的 provider


? ? ? ? G.策略名稱:區(qū)域敏感性策略

????????????對應的類名:ZoneAvoidanceRule

? ? ? ? ? ? ? ? 實現原理:

????????????1.以一個區(qū)域為單位考察可用性化漆,對于不可用的區(qū)域整個丟棄估脆,從剩下區(qū)域中選可用的provider

????????????2.如果這個 ip 區(qū)域內有一個或多個實例不可達或響應變慢,都會降低該 ip 區(qū)域內其他 ip 被選中的權重座云。


七疙赠、Ribbon更換輪詢策略

????1.創(chuàng)建Maven項目,添加依賴

項目結構

????2.修改啟動類朦拖,在啟動類中添加開啟eureka客戶端的注解圃阳,并編寫方法創(chuàng)建要獲取的輪詢對象

修改啟動類

????3.修改配置文件更換負載均衡策略

修改配置文件

八、Ribbon設置點對點連接(教學演示璧帝,不推薦使用該方式)

????1.創(chuàng)建項目捍岳,添加依賴,去掉Eureka相關的配置睬隶,單獨添加ribbon的依賴

修改pom.xml依賴文件

????2.修改application.properties/yml全局配置文件锣夹,禁用eureka,并指定具體的服務實例清單

修改application.properties全局配置文件

????3.啟動測試

測試結果

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末苏潜,一起剝皮案震驚了整個濱河市银萍,隨后出現的幾起案子,更是在濱河造成了極大的恐慌恤左,老刑警劉巖贴唇,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異飞袋,居然都是意外死亡滤蝠,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門授嘀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锣险,你說我怎么就攤上這事蹄皱。” “怎么了芯肤?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵巷折,是天一觀的道長。 經常有香客問我崖咨,道長锻拘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮署拟,結果婚禮上婉宰,老公的妹妹穿的比我還像新娘。我一直安慰自己推穷,他們只是感情好心包,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著馒铃,像睡著了一般蟹腾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上区宇,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天娃殖,我揣著相機與錄音,去河邊找鬼议谷。 笑死炉爆,一個胖子當著我的面吹牛,可吹牛的內容都是我干的柿隙。 我是一名探鬼主播叶洞,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼禀崖!你這毒婦竟也來了衩辟?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤波附,失蹤者是張志新(化名)和其女友劉穎艺晴,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體掸屡,經...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡封寞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了仅财。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狈究。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盏求,靈堂內的尸體忽然破棺而出抖锥,到底是詐尸還是另有隱情,我是刑警寧澤碎罚,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布磅废,位于F島的核電站,受9級特大地震影響荆烈,放射性物質發(fā)生泄漏拯勉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宫峦。 院中可真熱鬧岔帽,春花似錦、人聲如沸斗遏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诵次。三九已至账蓉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逾一,已是汗流浹背铸本。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遵堵,地道東北人箱玷。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像陌宿,于是被迫代替她去往敵國和親锡足。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內容