一、什么是分布式系統(tǒng)
A distributed system is one in which components located at network computers communicate and coordinate their actions only by passing messages.出自《Distributed Systems Concepts and Design》
我理解的:分布式系統(tǒng)是由多個節(jié)點(一個節(jié)點為一臺電腦)組成的偷遗,這些節(jié)點是互相連通的刑巧,這些節(jié)點上部署了我們的服務序臂,這些服務之間會有協同。
舉例:alibaba搂赋、aliexpress皂吮、taobao、tmall這些都是分布式系統(tǒng)
在分布式系統(tǒng)中有些負責存儲蒂胞、有些負責計算图呢、有些負責請求轉發(fā)等,總之各司其職骗随,干什么的都有蛤织。
二、分布式系統(tǒng)的意義
高性能:單機性能總是有限的鸿染,通過更換硬件以垂直擴展的方式提升性能成本會越來越高指蚜,而且總會遇到瓶頸
高可用:單機出現故障咋辦,整個系統(tǒng)就掛掉了牡昆,如果是分布式系統(tǒng)只是部分可用姚炕,再加上故障轉移和自動恢復的功能,用戶是感受不到不可用的丢烘。
高吞吐:增加機器可以線性提高吞吐量,比如單機可以支撐1000QPS些椒,再增加一臺理論上可以支撐2000QPS
三播瞳、分布式系統(tǒng)基礎知識
線程與進程的執(zhí)行模式
對于單線程來說,我們都知道摩爾定律免糕,18個月性能增加一倍赢乓。
對于多線程來說,我們需要知道阿姆達爾定律石窑,充分利用多核的優(yōu)勢來提升性能牌芋、提高吞吐量
多線程模式
互不通信的多線程模式:沒有交集,互不通信松逊,各自執(zhí)行各自的
基于共享容器協同的多線程模式:注意共享容器的安全性(方案:1躺屁、加鎖——互斥鎖、讀寫鎖等经宏;2犀暑、Copy on write)
通過事件協同的多線程模式:一個線程的執(zhí)行要等待另一個線程的通知,注意死鎖(方案:獲取鎖的順序)
多進程模式
線程是屬于進程的烁兰,一個進程內的多個線程共享了進程的內存空間耐亏;而多個進程之間的內存空間都是獨立的,因此多個進程間通過內存共享沪斟、交換數據的方式與多線程是不同的广辰。另外,進程間的通信、協調择吊、事件通知李根、互斥鎖的釋放跟多線程也是不一樣的,不同的平臺所支持的方式也不同干发。
多進程與單進程多線程相比朱巨,劣勢在哪:1、進程的通信枉长,會涉及序列化與反序列化冀续,開銷比線程更大;2必峰、多進程占用資源比多線程占用資源多洪唐。
多進程與單進程多線程相比,優(yōu)勢在哪:1吼蚁、多進程資源控制更容易凭需;2、多進程中的單個進程問題不會造成整體的不可用肝匆,例如nginx的worker進程粒蜈。
分布式系統(tǒng)就是由多機組成的系統(tǒng),可以近似看為單機多進程變?yōu)榱硕鄼C多進程旗国。多機多進程的可用性會更高枯怖。
網絡通信基礎
ISO的OSI網絡模型,TCP/IP模型能曾,TCP/IP的3次握手度硝、4次揮手,TCP/IP的各狀態(tài)寿冕,以及TCP/IP協議的包頭包體的組成部分等等蕊程,大家自行查找相關資料學習。
網絡IO實現方式
BIO
NIO
AIO
馮.諾依曼提出計算機組成與分布式系統(tǒng)的對比
輸入設備
輸出設備
控制器
運算器
存儲器
分布式系統(tǒng)難點
缺乏全局時鐘
面對故障獨立性
處理單點故障
事務的挑戰(zhàn)
鎖