<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>

          我來曝光一個很多人都不知道的學(xué)習(xí)網(wǎng)站。

          共 5178字,需瀏覽 11分鐘

           ·

          2022-03-05 11:36

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

          就是阿里云。

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

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

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

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

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

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

          幫助中心

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

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

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

          https://help.aliyun.com/

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

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

          再比如,中間件這里,我也圈幾個:

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

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

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

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

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

          下面我用 Redis 來舉個例子。

          阿里云 Redis 文檔

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

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

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

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

          應(yīng)用場景

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

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

          你怎么回答?

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

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

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

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

          災(zāi)備方案

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

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

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

          但是如果你會,那就是加分項。

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

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

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

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

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

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

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

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

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

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

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

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

          命令支持

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

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

          比如這兩個命令:

          它們是干啥的呢?

          來,我問你一個問題:用 Redis 做分布式鎖的時候,解鎖用的命令是什么?

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

          那么解鎖的時候需要注意什么呢?

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

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

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

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

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

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

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

          是的,lua 腳本。

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

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

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

          所以,阿里自己搞了一個 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

          是不是簡潔了很多?

          而它的底層我沒去看,但是猜也知道,就是對 lua 腳本的一個封裝。

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

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

          同時文中還提到了如何保障一致性的問題:

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

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

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

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

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

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

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

          比如有個 TairZset 命令。

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

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

          這個命令也是開源的。

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

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

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

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

          比如我舉其中的一個例子來說:

          請問,Redis 的 CPU 使用率高了,你有哪些解決方案或者說是排查思路?

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

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

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

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

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

          那么我們怎么找到高消耗的命令呢?

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

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

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

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

          而且,就算你面試的時候說,我們是通過可視化頁面找到的高消耗命令,我也覺得沒啥問題,畢竟主要是看你有那些思路。

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

          除此之外,還有這幾個方案:

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

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

          最佳實(shí)踐

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

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

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

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

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

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

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

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

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

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

          其他

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

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

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

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

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

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

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

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

          當(dāng)時他問我:怎么隨便一搜就能搜到一篇高質(zhì)量的文章?

          我說恰好之前看過而已。其實(shí),我之前沒有看過。

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

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

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

          好了,那本文的技術(shù)部分就到這里啦。

          下面這個環(huán)節(jié)叫做[荒腔走板],技術(shù)文章后面我偶爾會記錄、分享點(diǎn)生活相關(guān)的事情,和技術(shù)毫無關(guān)系。我知道看起來很突兀,但是我喜歡,因?yàn)檫@是一個普通博主的生活氣息。

          你要不喜歡,退出之前記得文末點(diǎn)個“在看”哦。

          荒腔走板

          這周搞了一下家里的“工位”,整體來說就是搞得花里浮哨的。

          之前桌面上的支架是我自己放的一塊裝修的時候的邊角料,也就是一塊長方形的中空玻璃,只是這玩意實(shí)在是太重了,而且臟了一點(diǎn)都能看的特別清楚,搞的我每天都要擦一次桌面。

          于是我在網(wǎng)上買了一個木頭的,看起來質(zhì)量還不錯,就是味兒大,我在陽臺放了一周多,才把味道散去。

          最后把家里各種各樣的小玩偶全部都堆到這里來,發(fā)現(xiàn)我還是薅了各大平臺很多手辦羊毛的。

          希望以后再接再厲,目標(biāo)就是堆滿。

          家里整體風(fēng)格是簡約風(fēng),但是工作區(qū)域我就像弄的復(fù)雜一點(diǎn),滿滿當(dāng)當(dāng)?shù)模@樣會比較有干勁兒。

          哦,對了,這周還抽空去了一趟動物園,發(fā)了一期荒腔走板,可以看看,是個耍朋友的好地方:《歪歪帶你耍成都。這個地方巴適哦!》

          雖然閱讀量非常低,但是希望以后能做成一個系列,就叫做“歪游記“,對標(biāo)周董的“周游記”哈哈。

          最后說一句(求關(guān)注)

          好了,看到了這里了, 轉(zhuǎn)發(fā)、在看、點(diǎn)贊 隨便安排一個吧,要是你都安排上我也不介意。寫文章很累的,需要一點(diǎn)正反饋。

          給各位讀者朋友們磕一個了:

          瀏覽 56
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  中文字幕一区二区三区乱码视频 | 99re3 | 五月激情啪啪 | 一级黄色电影A片 | 亚洲综合小说 |