原创 分佈式概念:CAP理論

C 代表 Consistency,一致性,是指所有節點在同一時刻的數據是相同的,即更新操作執行結束並響應用戶完成後,所有節點存儲的數據會保持相同。A 代表 Availability,可用性,是指系統提供的服務一直處於可用狀態,對於用戶的請

原创 分佈式概念:通信之發佈訂閱(kafka)

發佈訂閱的三要素是生產者、消費者和消息中心 生產者負責產生數據放到消息中心, 消費者向消息中心訂閱自己感興趣的消息, 當發佈者推送數據到消息中心後,消息中心根據消費者訂閱情況將相關數據推送給對應的訂閱者。 發佈訂閱的基本工作原理 生產者

原创 分佈式概念:一致性哈希

存儲方案選型時,通常會考慮這三個維度 數據均勻: (1)不同存儲節點中存儲的數據要儘量均衡,避免讓某一個或某幾個節點存儲壓力過大,而其他節點卻幾乎沒什麼數據。 (2)用戶訪問也要做到均衡,避免出現某一個或某幾個節點的訪問量很大,但其他節點

原创 重溫算法Day25:哈希算法的應用

哈希算法:將任意長度的二進制值串映射爲固定長度的二進制值串,這個映射的規則就是哈希算法,而通過原始數據映射之後得到的二進制值串就是哈希值。 hash算法應用安全加密、 MD5(MD5 Message-Digest Algorithm,MD

原创 分佈式概念:分佈式事務(通過分佈式消息來確保事務最終一致性)

分佈式事務,就是在分佈式系統中運行的事務,由多個本地事務組合而成。 例子: 對於網上購物的每一筆訂單來說,電商平臺一般都會有兩個核心步驟:一是訂單業務採取下訂單操作,二是庫存業務採取減庫存操作。 通常,這兩個業務會運行在不同的機器上,甚至

原创 分佈式概念:通信之消息隊列(RocketMQ)

比如用戶註冊,註冊完成後發送通知郵件。如果不使用消息隊列:  1.檢查用戶註冊信息的合法性,如果合法則將註冊信息寫入數據庫中,若不合法,直接返回,流程結束; 2.將用戶註冊信息寫入數據庫後,給用戶發送通知郵件,以告知用戶註冊的相關信息,比

原创 分佈式概念:通信之遠程調用(RPC)

本地調用,是進程內函數之間的相互調用;遠程調用,是進程間函數的相互調用,是進程間通信 IPC(Inter-Process Communication)的一種方式。通過遠程調用,一個進程可以看到其他進程的函數、方法等。 本地過程調用(Loc

原创 分佈式概念:調度(任務和資源匹配的過程)

調度,爲用戶任務尋找合適的服務器這個過程,在分佈式領域中叫作調度。 單體調度 任務和分佈式系統中的空閒資源直接進行匹配調度。 一個集羣中只有一個節點運行調度進程,該節點對集羣中的其他節點具有訪問權限,可以蒐集其他節點的資源信息、節點狀態

原创 Day28:紅黑樹

二叉查找樹在頻繁的動態更新過程中,可能會出現樹的高度遠大於 log2n 的情況,從而導致各個操作的效率下降。極端情況下,二叉樹會退化爲鏈表,時間複雜度會退化到 O(n)。 要解決這個複雜度退化的問題,需要設計一種平衡二叉查找樹,即紅黑樹。

原创 重溫算法Day26:Redis常用的數據結構

Redis 主要是作爲內存數據庫來使用,也就是說,數據是存儲在內存中的。儘管它經常被用作內存數據庫,但是,它也支持將數據存儲在硬盤中。 Redis 中,鍵的數據類型是字符串,但是爲了豐富數據存儲的方式,方便開發者使用,值的數據類型有很多,

原创 分佈式概念:數據複製

數據複製是實現數據可靠性的關鍵方法。對數據進行備份,以提高數據的可用性和可靠性,而實現數據備份的關鍵技術就是“數據複製技術”。 可以保證存儲在不同節點上的同一份數據是一致的。這樣當一個節點故障後,可以從其他存儲該數據的節點獲取數據,避免數

原创 分佈式概念:集中式架構(Mesos、Kubernets)與非集中式結構(Redis)

集中式結構 由一臺或多臺服務器組成中央服務器,系統內所有的業務也均先由中央服務器處理。多個節點服務器與中央服務器連接,並將自己的信息彙報給中央服務器,由中央服務器統一進行資源和任務調度:中央服務器根據這些信息,將任務下達給節點服務器;節點

原创 分佈式概念:負載均衡

負載均衡可以分爲兩種: 一種是請求負載均衡,即將用戶的請求均衡地分發到不同的服務器進行處理; 另一種是數據負載均衡,即將用戶更新的數據分發到不同的存儲服務器(數據分片技術) 網絡層的角度,通常有基於 DNS、IP 報文等的負載均衡方法;分

原创 分佈式概念:流量控制

網絡傳輸中的流量控制,就是讓發送方發送數據的速率不要太快,讓接收方來得及接收數據,具體的實現方法就是滑動窗口。 滑動窗口指的是,在任意時刻,發送方都維持一個連續的允許發送的數據大小,稱爲發送窗口;接收方也會維持一個連續的允許接收的數據大小

原创 分佈式概念:分佈式鎖(分佈式互斥的一種實現方式)

分佈式系統中,多個節點都需要訪問一個臨界資源,但是同一時刻只能有一個節點可以訪問,爲了解決這個問題就是要通過分佈式互斥來實現;分佈式鎖就是實現分佈式互斥的一種實現方式。 鎖是實現多線程同時訪問同一共享資源,保證同一時刻只有一個線程可訪問共