一哈街、什么是Spring Cloud Alibaba留瞳?
1、什么是微服務(wù)骚秦?
微服務(wù)其實是SOA的一種延伸她倘,它的思想是將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)作箍、互相配合帝牡,為用戶提供最終價值。每個服務(wù)運行在其獨立的進(jìn)程中蒙揣,服務(wù)于服務(wù)間采用輕量級的通信機制互相溝通靶溜。每個服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠獨立地部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等罩息。另外嗤详,應(yīng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機制瓷炮,對具體的一個服務(wù)而言葱色,應(yīng)根據(jù)上下文,選著合適的語言娘香、工具對其進(jìn)行構(gòu)建苍狰。
簡言之,微服務(wù)是將一個大型應(yīng)用烘绽,根據(jù)應(yīng)用有界上下文劃分為獨立的服務(wù)組件淋昭,完成了對服務(wù)的進(jìn)一步解耦。這樣強化了SOA的優(yōu)勢安接,但是在開發(fā)時翔忽,需要考慮的問題就會更多,就需要更多的解決方案盏檐。
2歇式、什么是Spring Cloud?
根據(jù)官網(wǎng)的描述:Spring Cloud 為開發(fā)者提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理胡野、服務(wù)發(fā)現(xiàn)材失、斷路器、智能路由硫豆、微代理龙巨、控制總線、一次性令牌够庙、全局鎖恭应、領(lǐng)導(dǎo)選舉抄邀、分布式會話耘眨、集群狀態(tài))。分布式系統(tǒng)的協(xié)調(diào)導(dǎo)致了樣板模式境肾,使用 Spring Cloud 開發(fā)人員可以快速建立實現(xiàn)這些模式的服務(wù)和應(yīng)用程序剔难。它們將適用于任何分布式環(huán)境,包括開發(fā)人員自己的筆記本電腦奥喻、裸機數(shù)據(jù)中心和托管平臺(如 Cloud Foundry)偶宫。
簡言之,Spring Cloud是解決分布式應(yīng)用的問題的一站式方案环鲤,是基于Spring Boot纯趋,讓應(yīng)用從單機、集群向分布式轉(zhuǎn)化的一套工具。Spring Cloud是微服務(wù)時代的產(chǎn)物吵冒。
Spring Boot整合Spring Cloud在某種意義上纯命,類似于Spring MVC向Spring Boot的過渡。將松散的解決方案集合成一站式痹栖,減輕開發(fā)適配的負(fù)擔(dān)亿汞。讓開發(fā)專注于解決問題,而不需要過多的花費精力專注于到底怎么進(jìn)行組件間的適配揪阿。(在肯德基消費時這種問題就會很明顯疗我,帶著鼓鼓的錢包思考如何搭配漢堡小食飲料,但是目的只有想吃飽南捂!那不如花一點優(yōu)惠吴裤,去選個全家桶,吃不飽再弄點別的黑毅,選擇性也更高嚼摩。開箱即用對于大多數(shù)玩家,是最好的選擇)
二矿瘦、服務(wù)注冊與服務(wù)發(fā)現(xiàn):Nacos
1枕面、什么是Nacos?
Nacos和Zookeeper缚去、Eureka的功能大體一致潮秘,都可以作為服務(wù)的注冊中心,實現(xiàn)服務(wù)的注冊與發(fā)現(xiàn)易结。在Spring Cloud Netflix版本中枕荞,推薦使用的注冊中心為Eureka,在之前結(jié)合Dubbo通信組件時搞动,Dubbo推薦的注冊中心是Zookeeper躏精。
在注冊中心的選型當(dāng)中,繞不開的話題就是CAP理論(CP還是AP鹦肿,沒有CA矗烛,如果不能容錯,服務(wù)將面臨毀滅性的打擊)箩溃。Eureka采用的AP模式瞭吃,提供了可用性和分區(qū)容錯。以AP設(shè)計思想所實現(xiàn)分布式注冊中心涣旨,大體上會去中心化歪架,使得每個節(jié)點都具有同等地位,采用相互注冊設(shè)計思想霹陡,這樣的設(shè)計使得只要有一個注冊節(jié)點存活和蚪,整個微服務(wù)就可以實現(xiàn)不會崩潰止状。Zookeeper區(qū)別于Eureka,采用的是CP的設(shè)計攒霹,實現(xiàn)了一致性和分區(qū)容錯导俘。以CP設(shè)計思想所實現(xiàn)分布式注冊中心,大體上都需要有主次之分剔蹋,當(dāng)主節(jié)點宕機旅薄,集群會進(jìn)行重新選舉并推選出新一個主節(jié)點,然后進(jìn)行數(shù)據(jù)的同步泣崩,以此來保持?jǐn)?shù)據(jù)一致性少梁。
Nacos是混合配置(既支持CP有支持AP,默認(rèn)為AP)矫付。
2凯沪、Nacos快速開始(請參考官方文檔,注意版本協(xié)調(diào))
3买优、Nacos原理
I妨马、注冊服務(wù)
II、監(jiān)聽心跳
三杀赢、服務(wù)調(diào)用OpenFeign
四烘跺、負(fù)載均衡:
1、Ribbon
2脂崔、LoadBalance
五滤淳、流量控制:Sentinel
1、雪崩
2砌左、防止雪崩
I脖咐、限流
①、直連限流
②汇歹、關(guān)聯(lián)限流
③屁擅、鏈路限流
“背黑鍋我來,送死你去”
④产弹、限流恢復(fù)
- 快速失敗
- 預(yù)熱
- 排隊的等待
II派歌、降級熔斷
①、慢調(diào)用比
當(dāng)單個請求的響應(yīng)時間超過閾值(RT設(shè)置的時間)取视,進(jìn)入準(zhǔn)降級狀態(tài)硝皂。在接下來 1秒內(nèi)若連續(xù) 5 個請求響應(yīng)時間均超過RT常挚,則進(jìn)行降級作谭,持續(xù)時間為時間窗口的值。
②奄毡、異常比
每秒出現(xiàn)的異常請求量與通過量的比大于閾值時折欠,就進(jìn)行降級處理,持續(xù)時間為時間窗口的值。
③锐秦、異常數(shù)
1 分鐘內(nèi)的出現(xiàn)異常的請求數(shù)超過閾值就進(jìn)行降級處理咪奖,降級時間也為時間窗口的值,這里設(shè)置降級時間最好大于 60秒酱床,防止服務(wù)剛結(jié)束熔斷羊赵,又進(jìn)入下一次熔斷了。
III扇谣、熱點與授權(quán)
- 熱點規(guī)則:更細(xì)粒度出的流控昧捷,可以具體到對某個熱點參數(shù)的進(jìn)行限流。設(shè)置限流策略后罐寨,如果帶著被限流參數(shù)的請求量超過閾值靡挥,則進(jìn)行限流,時間為統(tǒng)計窗口時長鸯绿。通過@SentinelResource注解跋破,實現(xiàn)對資源進(jìn)行流控。
- 授權(quán)規(guī)則:給指定的資源設(shè)置流控應(yīng)用(追加參數(shù))瓶蝴,可以對流控應(yīng)用進(jìn)行訪問權(quán)限的設(shè)置毒返,具體就是添加白名單和黑名單。通過實現(xiàn) RequestOriginParser舷手,給請求指定流控應(yīng)用接口來完成饿悬。