前幾天,在我們的技術(shù)交流群里看到有小伙伴問:有沒有練手搭建Redis集群的方式推薦:
不禁讓我想到,對(duì)于各種集群和分布式基礎(chǔ)設(shè)施的搭建,其實(shí)是每個(gè)開發(fā)者進(jìn)階時(shí)候都要經(jīng)歷的一個(gè)成長過程。但是,這里對(duì)于不少開發(fā)者來說,卻又面臨著一個(gè)現(xiàn)實(shí)問題:我沒有足夠的資源(主機(jī)或配置)去嘗試和練習(xí)。
最近,DD剛好看到阿里云有個(gè)可以免費(fèi)領(lǐng)機(jī)器的活動(dòng),還挺適合正在學(xué)習(xí)這方面技術(shù)內(nèi)容的小伙伴來領(lǐng)取做練手資源的。
#如何領(lǐng)取
這個(gè)免費(fèi)領(lǐng)機(jī)器的機(jī)會(huì),其實(shí)是阿里云ECS面向?qū)W生和個(gè)人開發(fā)者的免費(fèi)試用活動(dòng)。它的規(guī)則是每個(gè)月提供280元的抵扣額度(實(shí)例部分200元,公網(wǎng)流量80元),在此額度內(nèi),可在5個(gè)地域試用1-4臺(tái)。
劃重點(diǎn)?。。∵@次的免費(fèi)試用跟以前不一樣了,是可以領(lǐng)多臺(tái)的!
所以,我們只需要在免費(fèi)額度之內(nèi),選擇盡可能多的機(jī)器,就能滿足我們練習(xí)搭建各種集群的需求了。
領(lǐng)取入口:https://click.aliyun.com/m/1000380445/open in new window
進(jìn)入免費(fèi)試用頁面之后,按如圖操作:
當(dāng)然了,如果你不是想要搭建集群練手的話,也可以選擇其他配置,只要符合控制每個(gè)月ECS的費(fèi)用在200元、公網(wǎng)費(fèi)用80元以內(nèi),就可以免費(fèi)使用。
另外,這里告訴大家一個(gè)小秘籍:那就是不用的時(shí)候開啟停機(jī)模式?。?!能省則省,榨干每一分額度 ^_^
#練手推薦
如果您還是學(xué)生,或者平時(shí)參與的項(xiàng)目架構(gòu)沒那么復(fù)雜,不知道現(xiàn)階段有哪些東西可以去學(xué)習(xí),或者不知道應(yīng)該按什么順序去練手。那么,DD這里給大家一些建議,您可以跟著我下面的思路來嘗試一下,這些內(nèi)容都是后端開發(fā)推薦掌握的必備技能。
下面推薦的內(nèi)容,我將以一個(gè)應(yīng)用演進(jìn)式發(fā)展的角度,來給大家梳理要學(xué)習(xí)的內(nèi)容順序,也讓大家了解到每個(gè)技術(shù)的基本應(yīng)用場景和引入時(shí)機(jī)。大家可以根據(jù)自己的情況選擇性的去選擇內(nèi)容練手。
#從0到1階段
通常來說,從0到1階段,作為一個(gè)初創(chuàng)應(yīng)用,沒有什么處理上的壓力,所以往往架構(gòu)是非常簡單的。一臺(tái)服務(wù)器 + 一臺(tái)數(shù)據(jù)庫,基本就搞定了。如果你從來沒有過這個(gè)體驗(yàn),那么可以嘗試一下下面的部署架構(gòu):
- 一臺(tái)機(jī)器搭建Nginx
- 兩臺(tái)臺(tái)機(jī)器部署應(yīng)用(雙實(shí)例)
- 一臺(tái)機(jī)器部署數(shù)據(jù)庫。
這里一個(gè)關(guān)鍵點(diǎn)在于Nginx的負(fù)載均衡配置,實(shí)現(xiàn)一個(gè)基礎(chǔ)且有一定高可用雛形的部署架構(gòu)。得益于兩臺(tái)服務(wù)器部署應(yīng)用,又有Nginx做負(fù)載均衡,還能實(shí)現(xiàn)滾動(dòng)發(fā)布,上線升級(jí)不影響用戶使用。
#從1到100階段
如果發(fā)展順利,用戶增長還不錯(cuò),那么你們?cè)谧龅漠a(chǎn)品需要進(jìn)一波推廣了。此時(shí)往往會(huì)碰到兩個(gè)問題:
一個(gè)是應(yīng)用服務(wù)器的負(fù)載增大,需要擴(kuò)容應(yīng)對(duì)更多請(qǐng)求。這個(gè)可以通過增加應(yīng)用部署,配合Nginx負(fù)載均衡來擴(kuò)容,如果你沒有像從0到1階段的那種結(jié)構(gòu)來部署的話,這個(gè)時(shí)候這一步就一定要補(bǔ)上了。
其次,影響性能處理最大的瓶頸大概率出現(xiàn)在數(shù)據(jù)庫。所以,很多時(shí)候,我們將在這個(gè)階段引入數(shù)據(jù)庫的一些高級(jí)用法,比如:
- 一主多從集群open in new window:通過一主多從結(jié)構(gòu),實(shí)現(xiàn)讀寫分離,用更多的機(jī)器來分?jǐn)倲?shù)據(jù)庫的負(fù)載。
- 多主多從集群open in new window:通過多主多從結(jié)構(gòu),將業(yè)務(wù)數(shù)據(jù)分庫處理。配合一些分庫框架和中間件,實(shí)現(xiàn)更大量級(jí)的數(shù)據(jù)存儲(chǔ)需求。
#從100到10000階段
隨著業(yè)務(wù)的繼續(xù)加速發(fā)展,數(shù)據(jù)訪問層面的壓力會(huì)越來越大。這個(gè)時(shí)候,我們往往都會(huì)開始引入緩存系統(tǒng),來加速用戶請(qǐng)求的響應(yīng)。減少熱點(diǎn)數(shù)據(jù)頻繁的訪問數(shù)據(jù)庫,減少數(shù)據(jù)庫的負(fù)載。所以,這個(gè)時(shí)候Redis往往就要登場了。緩存作為一個(gè)重要中間件,在上線的時(shí)候集群化部署肯定是需要的,所以下面這些,也建議大家可以嘗試一下:
- 主從模式open in new window:主從模式是Redis三種集群模式中最簡單的,在主從復(fù)制中,數(shù)據(jù)庫分為兩類:主數(shù)據(jù)庫(master)和從數(shù)據(jù)庫(slave)。其中,主從復(fù)制有如下特點(diǎn):
- 哨兵模式open in new window:主從模式的弊端就是不具備高可用性,當(dāng)master掛掉以后,Redis將不能再對(duì)外提供寫入操作,因此sentinel模式應(yīng)運(yùn)而生。sentinel中文含義為哨兵,顧名思義,它的作用就是監(jiān)控redis集群的運(yùn)行狀況,此模式具有如下一些特點(diǎn):
- 集群模式open in new window:Redis的哨兵模式基本已經(jīng)可以實(shí)現(xiàn)高可用,讀寫分離 ,但是在這種模式下每臺(tái) Redis 服務(wù)器都存儲(chǔ)相同的數(shù)據(jù),很浪費(fèi)內(nèi)存,所以在 redis3.0上加入了Cluster 集群模式,實(shí)現(xiàn)了 Redis 的分布式存儲(chǔ),也就是說每臺(tái) Redis 節(jié)點(diǎn)上存儲(chǔ)不同的內(nèi)容。下面是Cluster 集群模式的一些特點(diǎn):
#野蠻發(fā)展階段
接下來,如果業(yè)務(wù)發(fā)展一切順利。這個(gè)時(shí)候,數(shù)據(jù)越來越多,業(yè)務(wù)需求也越來越多,參與的開發(fā)人員也越來越多。這個(gè)時(shí)候,上面的架構(gòu)已經(jīng)很難滿足各類需求的快速迭代。于是又將引入各種有用的東西。所以,下面的東西也一樣推薦掌握。
數(shù)據(jù)異構(gòu)
現(xiàn)在的數(shù)據(jù)庫世界,是一個(gè)百花齊放的階段。沒有一個(gè)數(shù)據(jù)庫可以完美的解決所有問題,所以隨著業(yè)務(wù)的發(fā)展,我們往往都需要引入各種不同的數(shù)據(jù)庫來解決不同的業(yè)務(wù)需求。比如:引入Elasticsearch來解決搜索,引入InfluxDB解決時(shí)序類的統(tǒng)計(jì)等等。所以,對(duì)這方面感興趣的話,可以嘗試一下:
基礎(chǔ)設(shè)施
隨著團(tuán)隊(duì)的壯大,服務(wù)和系統(tǒng)越來越多。運(yùn)維壓力就會(huì)很大,所以一些分布式、微服務(wù)治理的工具也都可以引入來簡化開發(fā)和運(yùn)維。對(duì)這方面感興趣的讀者,也可以玩一下下面的搭建:
隨著服務(wù)和系統(tǒng)的增多,它們之間的通信有不少場景是不需要同步實(shí)現(xiàn)的。很多時(shí)候,系統(tǒng)間通過異步來實(shí)現(xiàn)會(huì)更加可靠。所以,消息中間件的引入也是必須的。目前最常用的有下面這些,如果您沒有練過手,也是非常推薦要掌握一下的: