個人學習資源免費分享網站:http://xiaocaoshare.com/
1.關於單機架構、集羣架構、分佈式架構理解:
單機架構:所有的代碼都寫在一個項目中,項目部署在一臺服務器上
集羣架構:就是單機複製幾份,一起組成的就是集羣。集羣中每臺服務器就叫做這個集羣的一個節點,所有節點構成了一個集羣。 每個節點都提供相同的服務
集羣的好處:系統易於擴展。但是,當業務發展到一定程度的時候,會產生一個問題——無論怎麼增加節點,整個集羣性能的提升效果並不明顯了。這時候,就需要使用微服務結構了
負載均衡服務器作用:主要解決用戶的請求,交給哪個節點進行處理。(最好交給負載較小的節點進行處理)
負載均衡策略:
1)輪詢(默認)
缺點:不會考慮到每臺服務器的處理能力
2)權重
注意 權重這種策略是根據權重的比例進行負載,是這樣的一個概率,而不是百分百按比例分配。
優點:考慮了每臺服務器處理能力的不同,用的最多.
3)ip_hash
優點:能實現同一個用戶訪問同一個服務器,解決了分佈式session問題
缺點:ip hash 負載均衡也是不平均的,可能不會起到很好的效果。
4)url hash(第三方:需要配第三方插件)
優點:能實現同一個服務(url)訪問同一個服務器
缺點:分配請求不平均,起不到負載均衡的功能,還是一個url會有大量流量.
5)fair(第三方)
優點:根據後端服務器的響應時間分佈請求,響應時間短的優先分配
分佈式架構:將一個完整的系統,按照業務功能,拆分成一個個獨立的子系統。在分佈式結構中,每個子系統就被稱爲“服務”。這些子系統能夠獨立運行在web容器中,它們之間通過RPC方式通信。
從單機結構到集羣結構,業務代碼基本不需要作任何修改,工程師要做的僅僅是多部署幾臺服務器,每臺服務器上運行相同的代碼就行了。但是,從集羣結構演進到微服務結構,之前的那套代碼就需要發生較大的改動。所以對於新系統,系統設計之初就採用微服務架構,這樣後期運維的成本更低。但如果一套老系統需要升級成微服務結構的話,那就得對代碼大動干戈了。所以,對於老系統而言,究竟是繼續保持集羣模式,還是升級成微服務架構,這需要架構師深思熟慮、權衡投入產出比。
分佈式架構的特點:
- 系統之間的耦合度大大降低,可以獨立開發、獨立部署、獨立測試,系統與系統之間的邊界非常明確,排錯也變得相當容易,開發效率大大提升。
- 系統之間的耦合度降低,從而系統更易於擴展,可以針對性地擴展某些服務。假設這個商城要搞一次大促,下單量可能會大大提升,因此可以針對性地提升訂單系統、產品系統的節點數量,而對於後臺管理系統、數據分析系統而言,節點數量維持原有水平即可。
- 服務的複用性更高。比如,將用戶系統作爲單獨的服務後,該公司所有的產品都可以使用該系統作爲用戶系統,無需重複開發
區別聯繫:
1)集羣主要的使用場景是爲了分擔請求的壓力,分佈式的應用場景是單臺機器已經無法滿足性能的要求
2)分佈式是指多個系統協同合作完成一個特定任務的系統。分佈式的主要工作是分解任務,將職能拆解
3)集羣主要是簡單加機器解決問題,對於問題本身不做任何分解
將一套系統拆分成不同子系統部署在不同服務器上,這叫分佈式。
然後部署多個相同的子系統在不同的服務器上,這叫集羣。
部署在不同服務器上的同一個子系統,叫做負載均衡。
分佈式和微服務的區別:
微服務是架構設計方式,分佈式是系統部署方式
微服務的設計是爲了不因爲某個模塊的升級和BUG影響現有的系統業務。微服務與分佈式的細微差別是,微服務的應用不一定是分散在多個服務器上,他也可以是同一個服務器。
分佈式屬於微服務
2.微服務、SpringBoot區別和聯繫
微服務就是將一個系統按照功能模塊進行劃分,每個功能獨立打包部署在web容器裏面,每個功能成爲一個服務,服務直接使用SpringCloud或Dubbo遠程調用協議進行服務間調用
springboot是一個快速搭建應用的框架,不是微服務
3.分佈式事務和分佈式鎖
分佈式事務:當遇到複雜業務調用時,可能會出現跨庫多資源(一個事務管理器,多個資源)/多服務調用(多個事務管理器,多個資源),期望全部成功或失敗回滾,這就是分佈式事務,用以保證“操作多個隔離資源的數據一致性”。
分佈式鎖: