叢集和分散式區別
單機結構
我想大家最最最熟悉的就是單機結構,一個系統業務量很小的時候所有的程式碼都放在一個專案中就好了,然後這個專案部署在一臺伺服器上就好了。整個專案所有的服務都由這臺伺服器提供。這就是單機結構。
那麼,單機結構有啥缺點呢?我想缺點是顯而易見的,單機的處理能力畢竟是有限的,當你的業務增長到一定程度的時候,單機的硬體資源將無法滿足你的業務需求。此時便出現了叢集模式,往下接著看。
叢集結構
叢集模式在程式猿界有各種裝逼解釋,有的讓你根本無法理解,其實就是一個很簡單的玩意兒,且聽我一一道來。
單機處理到達瓶頸的時候,你就把單機複製幾份,這樣就構成了一個“叢集”。叢集中每臺伺服器就叫做這個叢集的一個“節點”,所有節點構成了一個叢集。每個節點都提供相同的服務,那麼這樣系統的處理能力就相當於提升了好幾倍(有幾個節點就相當於提升了這麼多倍)。
但問題是使用者的請求究竟由哪個節點來處理呢?最好能夠讓此時此刻負載較小的節點來處理,這樣使得每個節點的壓力都比較平均。要實現這個功能,就需要在所有節點之前增加一個“排程者”的角色,使用者的所有請求都先交給它,然後它根據當前所有節點的負載情況,決定將這個請求交給哪個節點處理。這個“排程者”有個牛逼了名字——負載均衡伺服器。
叢集結構的好處就是系統擴充套件非常容易。如果隨著你們系統業務的發展,當前的系統又支撐不住了,那麼給這個叢集再增加節點就行了。但是,當你的業務發展到一定程度的時候,你會發現一個問題——無論怎麼增加節點,貌似整個叢集效能的提升效果並不明顯了。這時候,你就需要使用微服務結構了。
分散式結構
先來對前面的知識點做個總結。
從單機結構到叢集結構,你的程式碼基本無需要作任何修改,你要做的僅僅是多部署幾臺伺服器,每臺伺服器上執行相同的程式碼就行了。但是,當你要從叢集結構演進到微服務結構的時候,之前的那套程式碼就需要發生較大的改動了。所以對於新系統我們建議,系統設計之初就採用微服務架構,這樣後期運維的成本更低。但如果一套老系統需要升級成微服務結構的話,那就得對程式碼大動干戈了。所以,對於老系統而言,究竟是繼續保持叢集模式,還是升級成微服務架構,這需要你們的架構師深思熟慮、權衡投入產出比。
OK,下面開始介紹所謂的分散式結構。
分散式結構就是將一個完整的系統,按照業務功能,拆分成一個個獨立的子系統,在分散式結構中,每個子系統就被稱為“服務”。這些子系統能夠獨立執行在web容器中,它們之間通過RPC方式通訊。
舉個例子,假設需要開發一個線上商城。按照微服務的思想,我們需要按照功能模組拆分成多個獨立的服務,如:使用者服務、產品服務、訂單服務、後臺管理服務、資料分析服務等等。這一個個服務都是一個個獨立的專案,可以獨立執行。如果服務之間有依賴關係,那麼通過RPC方式呼叫。
這樣的好處有很多:
- 系統之間的耦合度大大降低,可以獨立開發、獨立部署、獨立測試,系統與系統之間的邊界非常明確,排錯也變得相當容易,開發效率大大提升。
- 系統之間的耦合度降低,從而系統更易於擴充套件。我們可以針對性地擴充套件某些服務。假設這個商城要搞一次大促,下單量可能會大大提升,因此我們可以針對性地提升訂單系統、產品系統的節點數量,而對於後臺管理系統、資料分析系統而言,節點數量維持原有水平即可。
- 服務的複用性更高。比如,當我們將使用者系統作為單獨的服務後,該公司所有的產品都可以使用該系統作為使用者系統,無需重複開發
連結:https://www.zhihu.com/question/20004877/answer/282033178
來源:知乎
相關文章
- 分散式與叢集的區別是什麼?分散式
- 單機、分散式、叢集的區別與聯絡分散式
- 【知識分享】伺服器分散式和叢集有什麼區別伺服器分散式
- 叢集、負載均衡、分散式的區別與聯絡負載分散式
- ElasticSearch 分散式叢集Elasticsearch分散式
- 架構設計基礎:單服務.叢集.分散式,基本區別和聯絡架構分散式
- HDFS分散式叢集搭建分散式
- golang分散式與叢集Golang分散式
- hadoop分散式叢集搭建Hadoop分散式
- elasticsearch(三)---分散式叢集Elasticsearch分散式
- HA分散式叢集搭建分散式
- 叢集、分散式和微服務的概念理解分散式微服務
- Citus 分散式 PostgreSQL 叢集 - SQL Reference(建立和修改分散式表 DDL)分散式SQL
- 一文秒懂分散式、叢集、負載均衡之間的區別分散式負載
- Hadoop完全分散式叢集配置Hadoop分散式
- Hadoop分散式叢集搭建_1Hadoop分散式
- Mongodb分散式叢集副本集+分片MongoDB分散式
- Citus 分散式 PostgreSQL 叢集 - SQL Reference(查詢分散式表 SQL)分散式SQL
- MongoDB中的分散式叢集架構MongoDB分散式架構
- 分散式、微服務、叢集,個人理解分散式微服務
- 分散式系統與叢集環境分散式
- Cassandra安裝及分散式叢集搭建分散式
- Redis面試題及分散式叢集Redis面試題分散式
- Citus 分散式 PostgreSQL 叢集 - SQL Reference(SQL支援和變通方案)分散式SQL
- 如何給女朋友解釋什麼是分散式和叢集?分散式
- 分散式鎖的區別分散式
- hadoop叢集搭建——單節點(偽分散式)Hadoop分散式
- LNMP 分散式叢集(六):keepalived 高可用方案LNMP分散式
- LNMP 分散式叢集(五):ThinkPHP專案部署LNMP分散式PHP
- 帶你快速瞭解 MongoDB 分散式叢集MongoDB分散式
- 分散式 PostgreSQL 叢集(Citus)官方安裝指南分散式SQL
- [Hadoop踩坑]叢集分散式環境配置Hadoop分散式
- 分散式協調服務☞zookeeper叢集搭建分散式
- 使用Docker Swarm搭建分散式爬蟲叢集DockerSwarm分散式爬蟲
- 深入淺出Websocket(二)分散式Websocket叢集Web分散式
- 本地事務和分散式事務的區別分散式
- 軟體系統的架構演進以及叢集和分散式架構分散式
- 聊聊叢集、分散式和微服務之間的聯絡和異同點分散式微服務