總結 第一部分:核心 sync 包 —— 本地併發 sync 包裏的這些工具,是處理單進程內、多個 goroutine 之間協同問題的基礎 1. 鎖 (Mutex RWMutex) 核心作用:保護共享資源,保證數據一致性。 任何時候,只允許一個(或一類)goroutine 進入“臨界區”。 精華: Mutex (互斥鎖):最簡單粗暴的鎖,一次只能進一個,不管他是
擴展併發原語 信號量(Semaphore/Weighted) 信號量(Semaphore/Weighted)是用來控制多個 goroutine 同時訪問多個資源的併發原語 初始化信號量:設定初始的資源的數量。 P 操作:將信號量的計數值減去 1,如果新值已經為負,那麼調用者會被阻塞並加入到等待隊列中。否則,調用者會繼續執行,並且獲得一個資源。 V 操作:將信號量的計數值加 1,如果先
基本併發原語 臨界區:避免程序中併發訪問或修改造成嚴重後果。 數據庫、共享數據結構、I/O 設備、連接池中的連接 同步原語 包含:互斥鎖 Mutex、讀寫鎖 RWMutex、併發編排 WaitGroup、條件變量 Cond、Channel 等 適用場景: 共享資源 任務編排:goroutine + WaitGroup/Channel 消息傳遞:goroutine +Channel。
實際應用場景(大模型生成) 場景設定:設計淘寶“雙十一”零點秒殺一個超熱門商品(比如 茅台)的後端系統 業務挑戰: 超高峯值流量:在零點鐘聲敲響的第一秒,可能會有數百萬用户同時點擊“搶購”按鈕。 數據強一致性:庫存只有 1000 瓶,絕對不能超賣。即賣出第 1001 瓶。 高可用性:系統不能崩潰。 公平性:儘量保證先到先得。 實施過程:一場精心編
分佈式併發原語 常用來做協調工作的軟件系統是 Zookeeper、etcd、Consul 之類的軟件 Zookeeper - Java Consul 分佈式併發原語一般 etcd🐂:分佈式互斥鎖、分佈式讀寫鎖、Leader 選舉 Leader 選舉 Leader + Slave 主節點常常執行寫操作,從節點常常執行讀操作,如果讀寫都在主節點,從節點只是提供一個備份功能的話,那麼,主從架構就會退
Channel CSP(Communicating Sequential Process):CSP 允許使用進程組件來描述系統,它們獨立運行,並且只通過消息傳遞的方式通信 Channel 類型是 Go 語言內置的類型,可以直接使用 Don’t communicate by sharing memory, share memory by communicating. --Go Proverbs b