還在爲沒機器練手搭集羣而苦惱?快進來免費領機器了!

前幾天,在我們的技術交流羣裏看到有小夥伴問:有沒有練手搭建Redis集羣的方式推薦:

這裏不禁讓我想到,對於各種集羣和分佈式基礎設施的搭建,其實是每個開發者進階時候都要經歷的一個成長過程。但是,這裏對於不少開發者來說,卻又面臨着一個現實問題:我沒有足夠的資源(主機或配置)去嘗試和練習

最近,DD剛好看到阿里雲有個可以免費領機器的活動,還挺適合正在學習這方面技術內容的小夥伴來領取做練手資源的。

如何領取

這個免費領機器的機會,其實是阿里雲ECS面向學生和個人開發者的免費試用活動。它的規則是每個月提供280元的抵扣額度(實例部分200元,公網流量80元),在此額度內,可在5個地域試用1-4臺

劃重點!!!這次的免費試用跟以前不一樣了,是可以領多臺的!

所以,我們只需要在免費額度之內,選擇儘可能多的機器,就能滿足我們練習搭建各種集羣的需求了。

領取入口https://click.aliyun.com/m/1000380445/

進入免費試用頁面之後,按如圖操作:

當然了,如果你不是想要搭建集羣練手的話,也可以選擇其他配置,只要符合控制每個月ECS的費用在200元、公網費用80元以內,就可以免費使用。

另外,這裏告訴大家一個小祕籍:那就是不用的時候開啓停機模式!!!能省則省,榨乾每一分額度 _

練手推薦

如果您還是學生,或者平時參與的項目架構沒那麼複雜,不知道現階段有哪些東西可以去學習,或者不知道應該按什麼順序去練手。那麼,DD這裏給大家一些建議,您可以跟着我下面的思路來嘗試一下,這些內容都是後端開發推薦掌握的必備技能。

下面推薦的內容,我將以一個應用演進式發展的角度,來給大家梳理要學習的內容順序,也讓大家瞭解到每個技術的基本應用場景和引入時機。大家可以根據自己的情況選擇性的去選擇內容練手。

從0到1階段

通常來說,從0到1階段,作爲一個初創應用,沒有什麼處理上的壓力,所以往往架構是非常簡單的。一臺服務器 + 一臺數據庫,基本就搞定了。如果你從來沒有過這個體驗,那麼可以嘗試一下下面的部署架構:

  • 一臺機器搭建Nginx
  • 兩臺臺機器部署應用(雙實例)
  • 一臺機器部署數據庫。

這裏一個關鍵點在於Nginx的負載均衡配置,實現一個基礎且有一定高可用雛形的部署架構。得益於兩臺服務器部署應用,又有Nginx做負載均衡,還能實現滾動發佈,上線升級不影響用戶使用。

從1到100階段

如果發展順利,用戶增長還不錯,那麼你們在做的產品需要進一波推廣了。此時往往會碰到兩個問題:

一個是應用服務器的負載增大,需要擴容應對更多請求。這個可以通過增加應用部署,配合Nginx負載均衡來擴容,如果你沒有像從0到1階段的那種結構來部署的話,這個時候這一步就一定要補上了。

其次,影響性能處理最大的瓶頸大概率出現在數據庫。所以,很多時候,我們將在這個階段引入數據庫的一些高級用法,比如:

  • 一主多從集羣:通過一主多從結構,實現讀寫分離,用更多的機器來分攤數據庫的負載。
  • 多主多從集羣:通過多主多從結構,將業務數據分庫處理。配合一些分庫框架和中間件,實現更大量級的數據存儲需求。

從100到10000階段

隨着業務的繼續加速發展,數據訪問層面的壓力會越來越大。這個時候,我們往往都會開始引入緩存系統,來加速用戶請求的響應。減少熱點數據頻繁的訪問數據庫,減少數據庫的負載。所以,這個時候Redis往往就要登場了。緩存作爲一個重要中間件,在上線的時候集羣化部署肯定是需要的,所以下面這些,也建議大家可以嘗試一下:

  • 主從模式:主從模式是Redis三種集羣模式中最簡單的,在主從複製中,數據庫分爲兩類:主數據庫(master)和從數據庫(slave)。其中,主從複製有如下特點:
    • 主數據庫可以進行讀寫操作,當讀寫操作導致數據變化時會自動將數據同步給從數據庫;
    • 從數據庫一般是隻讀的,並且接收主數據庫同步過來的數據;
    • 一個master可以擁有多個slave,但是一個slave只能對應一個master;
    • slave掛了不影響其他slave的讀和master的讀和寫,重新啓動後會將數據從master同步過來;
    • master掛了以後,不影響slave的讀,但redis不再提供寫服務,master重啓後redis將重新對外提供寫服務;
    • master掛了以後,不會在slave節點中重新選一個master;
  • 哨兵模式:主從模式的弊端就是不具備高可用性,當master掛掉以後,Redis將不能再對外提供寫入操作,因此sentinel模式應運而生。sentinel中文含義爲哨兵,顧名思義,它的作用就是監控redis集羣的運行狀況,此模式具有如下一些特點:
    • sentinel模式是建立在主從模式的基礎上,如果只有一個Redis節點,sentinel就沒有任何意義;
    • 當master掛了以後,sentinel會在slave中選擇一個做爲master,並修改它們的配置文件,其他slave的配置文件也會被修改,比如slaveof屬性會指向新的master;
    • 當master重新啓動後,它將不再是master,而是做爲slave接收新的master的同步數據;
    • sentinel因爲也是一個進程,所以有掛掉的可能,所以sentinel也會啓動多個形成一個sentinel集羣;
    • 多sentinel配置的時候,sentinel之間也會自動監控;
    • 當主從模式配置密碼時,sentinel也會同步將配置信息修改到配置文件中;
    • 一個sentinel或sentinel集羣可以管理多個主從Redis,多個sentinel也可以監控同一個redis;
    • sentinel最好不要和Redis部署在同一臺機器,不然Redis的服務器掛了以後,sentinel也可能會掛掉。
  • 集羣模式:Redis的哨兵模式基本已經可以實現高可用,讀寫分離 ,但是在這種模式下每臺 Redis 服務器都存儲相同的數據,很浪費內存,所以在 redis3.0上加入了Cluster 集羣模式,實現了 Redis 的分佈式存儲,也就是說每臺 Redis 節點上存儲不同的內容。下面是Cluster 集羣模式的一些特點:
    • Sentinel模式基本可以滿足一般生產的需求,具備高可用性。但是當數據量過大到一臺服務器存放不下的情況時,主從模式或sentinel模式就不能滿足需求了,這個時候需要對存儲的數據進行分片,將數據存儲到多個Redis實例中。cluster模式的出現就是爲了解決單機Redis容量有限的問題,將Redis的數據根據一定的規則分配到多臺機器。
    • Cluster可以說是sentinel+主從模式的結合體,通過cluster可以實現主從和master重選功能,所以如果配置兩個副本三個分片的話,就需要六個Redis實例。因爲Redis的數據是根據一定規則分配到cluster的不同機器的,當數據量過大時,可以新增機器進行擴容。
    • 使用集羣,只需要將redis配置文件中的cluster-enable配置打開即可,每個集羣中至少需要三個主數據庫才能正常運行,新增節點非常方便。

野蠻發展階段

接下來,如果業務發展一切順利。這個時候,數據越來越多,業務需求也越來越多,參與的開發人員也越來越多。這個時候,上面的架構已經很難滿足各類需求的快速迭代。於是又將引入各種有用的東西。所以,下面的東西也一樣推薦掌握。

數據異構

現在的數據庫世界,是一個百花齊放的階段。沒有一個數據庫可以完美的解決所有問題,所以隨着業務的發展,我們往往都需要引入各種不同的數據庫來解決不同的業務需求。比如:引入Elasticsearch來解決搜索,引入InfluxDB解決時序類的統計等等。所以,對這方面感興趣的話,可以嘗試一下:

基礎設施

隨着團隊的壯大,服務和系統越來越多。運維壓力就會很大,所以一些分佈式、微服務治理的工具也都可以引入來簡化開發和運維。對這方面感興趣的讀者,也可以玩一下下面的搭建:

隨着服務和系統的增多,它們之間的通信有不少場景是不需要同步實現的。很多時候,系統間通過異步來實現會更加可靠。所以,消息中間件的引入也是必須的。目前最常用的有下面這些,如果您沒有練過手,也是非常推薦要掌握一下的:

上面DD主要介紹了一些我接觸過的比較常用的內容。特定的業務還會有很多技術組件引入,如果上面沒有包含的話,您也可以前往阿里雲開發者社區搜索文章來嘗試練手。如果您有什麼集羣搭建的內容推薦,也歡迎留言區補充~

歡迎關注我的公衆號:程序猿DD。第一時間瞭解前沿行業消息、分享深度技術乾貨、獲取優質學習資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章