分佈式系統從理論到實戰系列

image

本文首發於一世流雲的我的博客: https://www.tpvlog.com/articl...

《分佈式系統從理論到實戰系列》是我寫的第三個專欄,也將會是涵蓋面最廣、知識點最複雜的一個專欄。我一直在思考怎樣才能將分佈式相關的知識系統化的闡述出來,網絡上有不少關於分佈式的文章、視頻、書籍,但要麼過於零散,要麼泛泛而談,不多看到有能系統、全面、深刻淺出的闡述和概括實際工做中用的各類分佈式知識和框架的系列文章。算法

雖然分佈式涉及的東西確實很是龐雜,但我認爲仍是能夠系統的經過文章由面到點的闡述出來的,由於咱們工做中用到的分佈式技術其實就那麼幾種,剩下的就是在實戰中積累經驗,坑踩得多了,經驗纔會豐富。我寫這個系列的過程自己也是一個不斷自我學習、總結概括的過程,每一個知識點和每一個框架的介紹都參考了很是多的文章、書籍,也感謝前人的總結概括,我後面也會列出我認爲一些比較好的書籍供讀者參考。緩存

整個系列包含三部分:理論篇進階篇實戰篇。咱們先從最基本的「什麼是分佈式系統?」開始。網絡

1、簡介

分佈式系統(Distributed System),對於不少剛接觸的同窗來講,聽到這個詞就會感到畏懼,彷彿以爲這是一類很高深的理論或技術。其實否則,分佈式理論自己當然很晦澀,但通過幾十年的發展,在工業環境應用中已經較爲成熟。架構

許多分佈式框架爲使用者屏蔽了複雜的底層細節,咱們要作的就是掌握基本的分佈式理論,而後對各種分佈式框架的特性和適用場景有全局性的瞭解,最後結合應用實際落地的場景,選擇適合本身的框架,在應用中逐步去了解框架細節,切勿爲了學習而學習,死鑽牛角尖。因此,學習分佈式技術的訣竅無他,惟熟爾。併發

何謂分佈式系統?負載均衡

分佈式系統是由集中式系統演化來的,因此在談分佈式系統以前,不妨先來看下傳統的集中式系統。框架

所謂集中式系統,就是把全部的程序、功能都集中到一臺主機上,從而往外提供服務的單體應用。集中式系統的優勢是便於維護、操做簡單。分佈式

但這樣的系統也有缺陷,不出問題還好,一出問題,就容易形成單點故障,全部功能就都不能正常工做了。另外,集中式系統的性能瓶頸就是單機性能的上限,橫向擴展比較困難。高併發

image

爲了解決集中式系統存在的缺陷問題,分佈式系統誕生並逐漸演化。關於分佈式系統的定義有不少,這裏引用《分佈式系統原理和範型》中的定義:性能

分佈式系統是若干獨立計算機的集合,這些計算機對於用戶來講就像是單個相關係統。

說的再直白點,分佈式系統就是一組經過網絡進行通訊、爲了完成共同任務而協調工做的計算機節點(Node)組成的系統。系統中的各個節點對於用戶是透明的,用戶感知不到背後的邏輯,就像訪問單個計算機同樣。

image

分佈式系統的目標就是要解決集中式系統的各類缺陷,實現整個系統的 高性能高可用可擴展。可是,要實現這三個目標並不容易,由於將系統從集中式拆分紅分佈式,會遇到各類各樣的問題,好比數據的一致性、節點間通訊方式、節點宕機問題等等。因而爲了解決這些問題,誕生出不少分佈式基本理論,好比CAP、一致性哈希、BASE等等。

2、理論篇

分佈式理論是分佈式系統可以實現高性能高可用可擴展這三個主要目標的基礎。
本部分從應用拆分爲分佈式後遇到的問題出發,介紹解決這些問題背後所依賴的分佈式理論,爲後續學習高性能高可用可擴展打下基礎。

本部分主要包含如下文章:

  • 分佈式理論之分佈式一致性(1):CAP理論
  • 分佈式理論之分佈式一致性(2):BASE理論
  • 分佈式理論之分佈式一致性(3):Paxos算法
  • 分佈式理論之分佈式一致性(4):Raft算法
  • 分佈式理論之分佈式事務(5):2PC
  • 分佈式理論之分佈式事務(6):3PC
  • 分佈式理論之分佈式事務(7):TCC
  • 分佈式理論之分佈式事務(8):可靠消息最終一致性方案
  • 分佈式理論之可擴展(9):一致性Hash
  • 分佈式理論之可擴展(10):Range Based
  • 分佈式理論之可擴展(11):全局流水號
  • 分佈式理論之可擴展(12):服務化拆分
  • 分佈式理論之高可用(13):Master-Slave
  • 分佈式理論之高可用(14):集羣
  • 分佈式理論之高可用(15):降級、熔斷、限流
  • 分佈式理論之高性能(16):讀寫分離
  • 分佈式理論之高性能(17):分庫分表
  • 分佈式理論之高性能(18):分佈式緩存
  • 分佈式理論之高性能(19):負載均衡

3、進階篇

進階篇和理論篇相輔相成,在進階篇中,咱們會以一些分佈式框架爲示例,依然從從高性能可擴展高可用三個維度出發講解分佈式理論的落地,以及在運用這些框架時的一些核心關注問題。

進階篇中,咱們不會具體去講某個分佈式框架怎麼使用,可是會羅列出一些比較好的書籍供讀者參考。後續若有須要,也會針對某些分佈式框架作一個專欄講解,好比分佈式MQ。

本部分包含如下文章:

  • 分佈式框架概述(1)
  • 分佈式框架之高性能(2):消息隊列概述
  • 分佈式框架之高性能(3):消息隊列的可用性
  • 分佈式框架之高性能(4):消費的冪等性
  • 分佈式框架之高性能(5):消息丟失
  • 分佈式框架之高性能(6):消息有序性
  • 分佈式框架之高性能(7):消息積壓
  • 分佈式框架之高性能(8):搜索引擎概述
  • 分佈式框架之高性能(9):ElasticSearch架構
  • 分佈式框架之高性能(10):ElasticSearch優化
  • 分佈式框架之高性能(11):Redis線程模型
  • 分佈式框架之高性能(12):Redis緩存策略
  • 分佈式框架之高性能(13):Redis持久化
  • 分佈式框架之高性能(14):Redis複製
  • 分佈式框架之高性能(15):Redis的Master-Slave架構
  • 分佈式框架之高性能(16):Redis哨兵架構
  • 分佈式框架之高性能(17):Redis集羣架構
  • 分佈式框架之高性能(18):Redis分佈式鎖
  • 分佈式框架之高性能(19):高併發架構演進示例
  • 分佈式框架之可擴展(20):Dubbo簡介
  • 分佈式框架之可擴展(21):Dubbo的SPI機制
  • 分佈式框架之可擴展(22):Spring Cloud簡介
  • 分佈式框架之可擴展(23):Eureka基本原理
  • 分佈式框架之可擴展(24):服務網關
  • 分佈式框架之可擴展(25):Ribbon簡介
  • 分佈式框架之可擴展(26):Zookeeper簡介
  • 分佈式框架之可擴展(27):Zookeeper分佈式鎖
  • 分佈式框架之可擴展(28):分佈式Session
  • 分佈式框架之高可用(29):Hystrix簡介
  • 分佈式框架之高可用(30):Hystrix資源隔離
  • 分佈式框架之高可用(31):Hystrix請求流程
  • 分佈式框架之高可用(32):Hystrix降級
  • 分佈式框架之高可用(33):Hystrix斷路器

4、實戰篇

實戰篇部分,咱們會以一個真實的線上系統爲案例,從零開始搭建,期間運用理論篇和進階篇中涉及的各類分佈式框架和理論,逐步完善咱們的應用,以掌握各類分佈式框架的組合應用。

本部分包含如下文章:

  • 分佈式實戰之系統背景:系統概述

TO BE CONTINUED...

相關文章
相關標籤/搜索