<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          看麻了,竟然是個(gè)學(xué)習(xí)網(wǎng)站?

          共 4665字,需瀏覽 10分鐘

           ·

          2022-03-03 19:16


          天,我想給大家分享一個(gè)很多人都不知道的學(xué)習(xí)網(wǎng)站。

          就是阿里云。

          我估計(jì)有很多人看到“阿里云”這幾個(gè)字出來(lái)的時(shí)候,就浮現(xiàn)出不好的感覺(jué),心中暗喊:不好,感覺(jué)這是一個(gè)廣告。趕緊跑。

          但是,你放心,這真不是廣告

          確實(shí),從本質(zhì)上來(lái)講,這是一個(gè)賣服務(wù)的網(wǎng)站。但是壯士請(qǐng)留步啊,我又不叫你去這上面買服務(wù),我真的在這上面學(xué)到了很多有用的知識(shí)。

          放心,學(xué)這些知識(shí)不要錢的。

          當(dāng)然了,阿里云要是能看到我的文章,想要給我打一筆錢我也是很樂(lè)意的。

          好了,話不多說(shuō),發(fā)車。

          幫助中心

          如果你覺(jué)得阿里云是一個(gè)賣服務(wù)的網(wǎng)站,是一個(gè)讓你花錢的地方,說(shuō)明你的打開方式是官方期望的打開方式。

          但是如果你用我的打開方式,它就會(huì)搖身一變,變成一個(gè)免費(fèi)的學(xué)習(xí)網(wǎng)站。

          我的打開方式,就是從它「幫助中心」進(jìn)去:

          https://help.aliyun.com/

          然后,關(guān)注它右邊導(dǎo)航欄的這一溜欄目。

          比如,數(shù)據(jù)庫(kù)這里,我隨便圈幾個(gè):

          再比如,中間件這里,我也圈幾個(gè):

          當(dāng)然,還有很多其他的可以看的東西,我就不一一展示了,大家感興趣自己去翻就行了。

          在幫助中心里面展示的東西,就是阿里云能賣的服務(wù)。

          而他們要賣服務(wù),一定要有對(duì)應(yīng)的文檔說(shuō)明。

          就是“吹牛逼”嘛,說(shuō)我的服務(wù)多么多么好,多么多么穩(wěn)定,多么多少省心,有那些應(yīng)用場(chǎng)景,巴拉巴拉巴拉...

          所以去翻閱對(duì)應(yīng)技術(shù)點(diǎn)他們提供的文檔,就是正確的打開方式。

          下面我用 Redis 來(lái)舉個(gè)例子。

          阿里云 Redis 文檔

          我覺(jué)得阿里云里面 Redis 的技術(shù)文檔是做的最好的,所以帶你看看。

          https://help.aliyun.com/product/26340.html

          這個(gè)學(xué)習(xí)路徑里面,就有很多值得我們關(guān)注的地方。

          比如我們先看這個(gè)幾個(gè)地方的內(nèi)容:

          應(yīng)用場(chǎng)景

          第一個(gè)Redis 有哪些應(yīng)用場(chǎng)景?

          這個(gè)問(wèn)題是不是面試的時(shí)候面試官也經(jīng)常問(wèn)你:Redis 在你的應(yīng)用里面是干啥用的?

          你怎么回答?

          保守一點(diǎn)的說(shuō),95% 的人都會(huì)說(shuō):拿來(lái)當(dāng)做緩存用。

          確實(shí),基本上都是拿來(lái)當(dāng)個(gè)緩存用用而已。但是你是不是可以補(bǔ)充一句:除了可以當(dāng)緩存用,我還知道它有其他的一下應(yīng)用場(chǎng)景,比如:

          https://help.aliyun.com/document_detail/43829.html

          咔咔咔,就直接把文檔上舉的例子再羅列一下,有行業(yè),有場(chǎng)景,這樣的回答肯定比你干癟癟的回答一個(gè)“緩存”好吧。

          災(zāi)備方案

          然后我們看“災(zāi)備方案”這一部分:

          https://help.aliyun.com/document_detail/100734.html

          也許你聽過(guò)“災(zāi)備”這個(gè)概念,但是大多是運(yùn)維人員關(guān)系的,我們作為開發(fā)其實(shí)了解的不多。

          但是如果你會(huì),那就是加分項(xiàng)。

          阿里云介紹了三種災(zāi)備方案。

          • 單可用區(qū)高可用方案,災(zāi)備級(jí)別最低,主備節(jié)點(diǎn)部署在同一可用區(qū)中的不同機(jī)器上,當(dāng)任一節(jié)點(diǎn)發(fā)生故障時(shí),由高可用HA(High Availability)系統(tǒng)自動(dòng)執(zhí)行故障切換,避免單點(diǎn)故障引起的服務(wù)中斷。
          • 同城容災(zāi)方案,災(zāi)備級(jí)別中等,主備節(jié)點(diǎn)分別部署在同一地域下兩個(gè)不同的可用區(qū),當(dāng)任一可用區(qū)因電力、網(wǎng)絡(luò)等不可抗因素失去通信時(shí),高可用HA系統(tǒng)將執(zhí)行故障切換,確保整個(gè)實(shí)例的持續(xù)可用。
          • 跨地域容災(zāi)方案,災(zāi)備級(jí)別最高,由多個(gè)子實(shí)例構(gòu)成全球分布式實(shí)例,所有子實(shí)例通過(guò)同步通道保持實(shí)時(shí)數(shù)據(jù)同步,由通道管理器負(fù)責(zé)子實(shí)例的健康狀態(tài)監(jiān)測(cè)、主備切換等等異常事件的處理,適用于異地災(zāi)備、異地多活、應(yīng)用就近訪問(wèn)、分?jǐn)傌?fù)載等場(chǎng)景。

          而單單一個(gè)災(zāi)備級(jí)別最低的“單可用區(qū)高可用方案”也有多種不同的部署架構(gòu):

          比如下面這個(gè)標(biāo)準(zhǔn)版-雙副本高可用架構(gòu):

          它采用了雙機(jī)主從(Master-Replica)架構(gòu),高可用 HA 模塊偵測(cè)到主節(jié)點(diǎn)故障時(shí),會(huì)自動(dòng)進(jìn)行主從切換,將 Replica 提升為 Master,而原來(lái)的 Master 恢復(fù)連接后會(huì)成為新的 Replica。

          這就是一個(gè)要實(shí)現(xiàn)高可用的最基本最簡(jiǎn)單的架構(gòu)圖。

          但是這個(gè)架構(gòu)的問(wèn)題在于只有一個(gè)集群,要是這整個(gè)集群都掛了怎么辦呢?

          沒(méi)辦法,只有演進(jìn)架構(gòu)。

          所以,還有集群版的雙副本高可用架構(gòu):

          集群架構(gòu)(雙副本)實(shí)例中的數(shù)據(jù)分片用于承載數(shù)據(jù),每個(gè)數(shù)據(jù)分片均為雙副本(分別部署在不同機(jī)器上)高可用架構(gòu),主節(jié)點(diǎn)發(fā)生故障后,系統(tǒng)會(huì)自動(dòng)進(jìn)行主備切換保證服務(wù)高可用。

          然后還有經(jīng)常提到的讀寫分離架構(gòu):

          另外的同城容災(zāi)方案、跨地域容災(zāi)方案我就不一一介紹了,大家自己去翻一下就行。

          命令支持

          在命令支持這塊,我也有新的發(fā)現(xiàn):

          有一些企業(yè)版才支持的命令,也就是說(shuō)這是阿里對(duì)于 Redis 進(jìn)行了二次開發(fā),對(duì)某些命令進(jìn)行了加強(qiáng)。

          比如這兩個(gè)命令:

          它們是干啥的呢?

          來(lái),我問(wèn)你一個(gè)問(wèn)題:用 Redis 做分布式鎖的時(shí)候,解鎖用的命令是什么?

          是 DEL 命令,是的,回答的很好。

          那么解鎖的時(shí)候需要注意什么呢?

          是不是需要檢查解鎖的線程和加鎖的線程得是同一個(gè)。

          你要是不明白為什么也沒(méi)關(guān)系,官網(wǎng)上舉個(gè)了這么一個(gè)例子:

          • t1時(shí)刻,App1設(shè)置了分布式鎖resource_1,過(guò)期時(shí)間為3秒。
          • App1由于程序慢等原因等待超過(guò)了3秒,而resource_1已經(jīng)在t2時(shí)刻被釋放。
          • t3時(shí)刻,App2獲得這個(gè)分布式鎖。
          • App1從等待中恢復(fù),在t4時(shí)刻運(yùn)行DEL resource_1將App2持有的分布式鎖釋放了。

          哦豁,不是自己加的鎖,卻把鎖給釋放了?

          所以,從上述過(guò)程可以看出,一個(gè)客戶端設(shè)置的鎖,必須由自己解開。

          因此客戶端需要先使用 GET 命令確認(rèn)鎖是不是自己設(shè)置的,然后再使用 DEL 解鎖。

          先獲取、再判斷、接著刪除,很明顯,這不是一個(gè)原子性的操作,怎么辦?

          可以用 lua 腳本。

          在 Redis 中通常需要用 lua 腳本來(lái)實(shí)現(xiàn)自鎖自解的功能,比如這樣:

          if?redis.call("get",KEYS[1])?==?ARGV[1]?then
          ????return?redis.call("del",KEYS[1])
          else
          ????return?0
          end

          是不是感覺(jué)有點(diǎn)麻煩呀?

          所以,阿里自己搞了一個(gè) CAD 命令。

          加鎖邏輯還是一樣:

          SET resource_1 random_value NX EX 5

          解鎖就變成了這樣:

          /*?if?(GET(resource_1)?==?my_random_value)?DEL(resource_1)?*/
          CAD?resource_1?my_random_value

          是不是簡(jiǎn)潔了很多?

          而它的底層我沒(méi)去看,但是猜也知道,就是對(duì) lua 腳本的一個(gè)封裝。

          CAS 命令是拿來(lái)續(xù)租的,可以自己去看看。

          https://help.aliyun.com/document_detail/146758.html

          同時(shí)文中還提到了如何保障一致性的問(wèn)題:

          如果你理解不了“如果丟失的數(shù)據(jù)跟分布式鎖有關(guān),則會(huì)導(dǎo)致鎖的機(jī)制出現(xiàn)問(wèn)題,從而引起業(yè)務(wù)異常”這句話,也就理解不了后面說(shuō)的“紅鎖”的解決方案。

          那么這里是不是又是一個(gè)引子,讓你找到在這個(gè)體系里面新的要學(xué)習(xí)的東西?

          而關(guān)于這個(gè)點(diǎn),其實(shí)我之前也寫文章解釋過(guò)《【求錘得錘的故事】Redis鎖從面試連環(huán)炮聊到神仙打架?!?/a>,你要不清楚,也可以去看看。

          除此之外,你可以看到它左邊的導(dǎo)航欄里面舉了好幾個(gè)例子:

          這些都是自研的,但是其實(shí)一部分命令其實(shí)都是開源的,包括前面提到的 CAD 和 CAS 命令:

          https://github.com/alibaba/TairString/blob/main/README-CN.md

          是不是又找到一個(gè)可以學(xué)習(xí)的方向?

          比如有個(gè) TairZset 命令。

          我們知道,Redis 原生的 zset 主要可以用來(lái)做排行榜,但是只支持單維度的排序。

          阿里搞了個(gè) TairZset 命令,擴(kuò)展了一下,就支持多維度了:

          這個(gè)命令也是開源的。

          性能排查與調(diào)優(yōu)

          https://help.aliyun.com/document_detail/265988.html

          這一部分的內(nèi)容,簡(jiǎn)直就是絕了。

          光看標(biāo)題就知道是干貨了。

          比如我舉其中的一個(gè)例子來(lái)說(shuō):

          請(qǐng)問(wèn),Redis 的 CPU 使用率高了,你有哪些解決方案或者說(shuō)是排查思路?

          不知道沒(méi)有關(guān)系,這里寫了三種。

          第一種是查找并禁用高消耗命令。

          高消耗命令:即時(shí)間復(fù)雜度為O(N)或更高的命令。通常情況下,命令的時(shí)間復(fù)雜度越高,在執(zhí)行時(shí)會(huì)消耗較多的資源,從而導(dǎo)致CPU使用率上升。

          由于 Redis 的特性,在執(zhí)行高消耗命令時(shí)會(huì)引發(fā)排隊(duì)導(dǎo)致應(yīng)用響應(yīng)變慢。

          極端情況下,甚至可能導(dǎo)致實(shí)例被整體阻塞,引發(fā)應(yīng)用超時(shí)中斷或流量跳過(guò)緩存層直接到達(dá)后端的數(shù)據(jù)庫(kù)側(cè),引發(fā)雪崩效應(yīng)。

          那么我們?cè)趺凑业礁呦牡拿钅兀?/p>

          這個(gè)就是它們產(chǎn)品提供的一個(gè)功能了:

          這里面連數(shù)據(jù)都給你截上了,基本上看的是一清二楚。

          那如果我們不用它的可視化頁(yè)面,用原生的功能,怎么做呢?

          slowlog-log-slower-than 和 slowlog-max-len 這個(gè)兩個(gè)參數(shù)配置了解一下,前者是設(shè)置慢查詢的閾值,后者是存放慢查詢的記錄。

          而且,就算你面試的時(shí)候說(shuō),我們是通過(guò)可視化頁(yè)面找到的高消耗命令,我也覺(jué)得沒(méi)啥問(wèn)題,畢竟主要是看你有那些思路。

          有思路了,找到對(duì)應(yīng)的解決方案還不是手到擒來(lái)的事情。

          除此之外,還有這幾個(gè)方案:

          如果經(jīng)過(guò)這些操作之后, CPU 的使用率還是很高怎么辦?

          在評(píng)估業(yè)務(wù)正常的情況下,加錢,加機(jī)器,升級(jí)配置。

          最佳實(shí)踐

          https://help.aliyun.com/document_detail/163162.html

          一定一定一定要去看每個(gè)技術(shù)點(diǎn)對(duì)應(yīng)的最佳實(shí)踐這一部分。

          比如在游戲玩家積分排行榜的這個(gè)實(shí)踐中,還給你提供了一套環(huán)境以及直接可以運(yùn)行的代碼:

          你只管按照步驟操作就行了。

          又比如在JedisPool資源池優(yōu)化的這里面。

          針對(duì) Redis 的配置給出了說(shuō)明和建議值。合理的配置能夠提升 Redis 的服務(wù)性能,降低資源開銷。

          這些都是很重要的關(guān)于參數(shù)的配置。

          也許你自己配置的時(shí)候,從其他項(xiàng)目中隨便就拷貝一個(gè)過(guò)來(lái)了,項(xiàng)目也跑的好好的,你甚至不知道每個(gè)參數(shù)是干啥的。

          但是在這里,你能找到答案。

          還有包括秒殺和雙十一,這些看起來(lái)很厲害的東西,這里都有:

          其他

          比如在 RabbitMQ 里面,有關(guān)于消息冪等的最佳實(shí)踐:

          也有關(guān)于消息重試、延時(shí)隊(duì)列等的高級(jí)特性的描述:

          比如在數(shù)字金融里面有個(gè)這東西:

          是一套在金融領(lǐng)域可復(fù)用的技術(shù)解決方案,而相關(guān)的技術(shù)棧的絕大部分都是開源的。

          如果你之前不了解 SOFAStack 這個(gè)玩意,那么這個(gè)地方就是你了解它的入口。

          上次有個(gè)讀者問(wèn)我關(guān)于 RocketMQ 的事務(wù)消息的問(wèn)題,我雖然沒(méi)有用過(guò),但是我給他發(fā)過(guò)去一個(gè)連接:

          https://help.aliyun.com/document_detail/43348.html

          這里面,就有他想要找的東西:

          我說(shuō)恰好之前看過(guò)而已。其實(shí),我之前沒(méi)有看過(guò)(偷笑)。

          但是我知道阿里云上面肯定有賣 RocketMQ 服務(wù)的,那么它這里面大概率有這方面的資料。

          所以我就上去那么隨便一翻,就找到了。

          這也是我想要把這個(gè)“學(xué)習(xí)網(wǎng)站”分享給你的原因,以后多一個(gè)找資料的地方,多一個(gè)學(xué)習(xí)新東西的地方,挺好的。

          完!

          圖解系列文章:
          看書的一點(diǎn)小建議!
          圖解系列文章匯總
          計(jì)算機(jī)基礎(chǔ)學(xué)習(xí)路線
          小林的圖解系統(tǒng),大曝光!
          不鴿了,小林的「圖解網(wǎng)絡(luò) 3.0 」發(fā)布!
          瀏覽 69
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产免费高清视频 | 免费大免费黄在线 | 丁香色婷婷五月激情综合深爱 | 三级成人网站 | 青青草在线视频免费在线观看 |