如果你期待對分散式系統有一個更全面的認識,想要了解各個技術在分散式系統中如何應用、分別解決哪些問題、有怎樣優秀的實現,推薦閱讀、收藏本篇。
分散式系統涉及到的理論知識及技術點比較多,以致於很多童鞋都說,分散式系統的學習是入門容易、深入難,通過網路搜尋到的知識點較為零散,難以系統化學習、融會貫通。本篇Mike將從以下幾個方面分享,帶著大家先窺探分散式的全貌,希望為大家釐清分散式學習之路的方向與具體路徑。
以上專題資料及學習圖譜,獲取方式:新增下方小助手VX即可
分散式系統的概念
分散式系統的作用
分散式系統的特性
分散式系統主流技術
分散式系統專題合集及知識圖譜
分散式系統是由一組通過網路進行通訊、為了完成共同的任務而協調工作的計算機節點組成的系統。有一種說法:分散式系統是若干獨立計算機的組合共同對使用者提供服務,但對於使用者來說,這些計算機就像是單個相關係統。
分散式系統的出現是為了用廉價的、普通的機器完成單個計算機無法完成的計算、儲存任務。其目的是利用更多的機器,處理更多的資料。
布式系統特性主要有透明性、可延伸性、可用性、可靠性、高效能、一致性等。這幾個特性是分散式系統的主要衡量指標,開始分散式系統的學習,從瞭解分散式系統的特性開始。
1、透明性
分散式的特徵之一是向使用者隱藏系統的內部組織結構,各種計算機之間的差別、通訊方式的差別都被隱藏了。使用分散式系統的使用者不關心繫統如何實現,以及看到的資料來自哪裡,使用者在任何時候都能以同一種方式與分散式系統進行互動。
2
可延伸性
可延伸性是指當增加或減少任務時,分散式系統的處理能力要能夠很方便地隨之增加或減少。即:能夠高效便捷地通過增加或減少機器的數量,來應對資料量的增長或減少。
3、可用性
可用性分散式系統的基本問題,可用性是指系統在各種情況下都能穩定地對外提供服務的能力,即高度可用的系統在任何時候都能正常地工作。
4、可靠性
可靠性是指系統可以無故障地持續執行,計算結果正確、儲存的資料不丟失。與可用性的差別在於,可靠性是依據時間間隔來定義,而不是任何時刻來進行定義的。
5、高效能
高效能是應用系統所需要具備的基本條件,不管是單機還是分散式系統,大家都非常關注效能。高效能是指應用系統對於使用者端請求的處理速度快,響應時間短,對於使用者來說就是該應用的操作流暢,擁有良好的使用者體驗。不同系統、不同業務型別對效能的衡量指標是不同的,譬如:淘寶交易系統可以是秒級別的響應,而網路遊戲則要保證在毫秒級別的響應。
6、一致性
通常情況下,我們所說的分散式一致性問題是指資料一致性問題。分散式架構的核心在於一致性的實現和妥協。一致性越強,對使用者越友好,但會制約系統的可用性;一致性越低,使用者端可能需要相容資料不一致的情況,但系統可用性會高出很多,具體實施時要考慮實際業務場景的需要去做取捨,不同場景下選擇合適的設計模式。
以上就是分散式系統的幾個主要特徵(基礎理論知識點)。接下來我們來了解下分散式系統在實現過程中可能用到的主流技術。
關於分散式系統的實現,主要會使用到哪些技術呢?下面簡單羅列了一些供大家參考。
• 負載均衡:Nginx、LVS等
• webserver:Tomcat、Apache、Jboss等
• service:SOA、微服務、Spring boot,SpringCloud等
• 容器:Docker,kubernetes等
• cache:Memcache、Redis等
• 協調中心:Zookeeper、Etcd等
• RPC框架:Grpc、Dubbo、Brpc等
• 訊息佇列:Kafka、RabbitMQ、RocketMQ、QSP等
• 實時資料平臺:Storm、Akka等
• 離線資料平臺:Hadoop、Spark等
• dbproxy:Cobar等
• db:Oracle、Mysql、MongoDB、HBase等
• 搜尋:Elasticsearch、Solr等
• 紀錄檔:Rsyslog、Elk、Flume等
Mike曾經輸出過一系列分散式系統相關的技術乾貨,主要包括:Kafka、Docker、Dubbo、Redis、負載均衡等專題,涉及到多種技術、理論知識以及協定。如果你期待對分散式系統有一個更全面的認識,想要了解各個技術在分散式系統中如何應用、分別解決哪些問題、有怎樣優秀的實現,最終將分散式系統中的相關技術與理論串聯起來,不妨瞭解下Mike免費分享的幾十期分散式系統專題合集及知識圖譜(長期持續更新)。
關注後,新增下方圖中VX即可