vivo 瀏覽器為應對多場景金幣激勵需求及舊架構流量、IO等痛點,升級福利中心架構。服務層面拆分流量與業務,打造金幣集散中心;數據層面分庫分表、拆解大表并優化流水設計;通過仲裁系統和軟事務保障數據一致性。改造后,系統可支撐千萬級DAU,性能穩定提升,物理存儲成本降低,解決了流量與存儲壓力,成為高可用... ...
管程(Monitor)是一種用于管理共享資源訪問的程序結構,能確保同一時刻只有一個線程訪問共享資源,解決并發編程中的互斥和同步問題。MESA模型是管程的經典實現,主要由入口等待隊列和條件變量等待隊列構成。 1)入口等待隊列?:確保線程互斥,多個線程試圖進入管程時,僅一個線程能成功,其余線程在入口等待 ...
在多線程環境中,?臨界區(Critical Section)是指一次只能由一個線程執行的代碼段,這些代碼通常涉及對共享資源(如變量、數據結構、文件或數據庫連接)的訪問或修改。臨界區的存在是為了解決并發控制中的兩大核心問題。 ? 1)數據不一致性?:如果多個線程同時對共享資源進行寫操作,可能會破壞數據 ...
并發編程的本質,是在看似混沌的并行執行中建立秩序,確保程序的確定性。為達此目的,并發原語應運而生,它們是構筑一切并發系統的基石。其核心使命在于,通過定義一套明確的交互范式,消除因資源共享而引發的競態條件(Race Condition),從而馴服并發世界的不確定性。 從Java的顯式鎖(synchro ...
默克爾樹 默克爾樹(Merkle Tree)是由計算機科學家Ralph Merkle多年前提出,并以他本人的名字來命名,也叫哈希樹。默克爾樹是一種樹形數據結構,通常是二叉樹,其中每個葉子節點是數據塊的哈希值,而每個非葉子節點是其所有子節點哈希值的哈希。樹根的哈希值(Merkle Root)代表了整個 ...
Gossip協議,中文可譯為“流言蜚語”“閑話”或“八卦”,形象地描述了該協議的工作方式——類似于人類社會中的信息傳播模式。Gossip協議最早由Xerox公司的Palo Alto研究中心(PARC)在一篇論文中提出,論文中將其稱為八卦算法或病毒算法(Epidemic Algorithm),但最終“ ...
隨著AI編程工具的崛起,代碼生成效率極大提升,但AI與實際項目需求間的“鴻溝”卻日益凸顯。本文探討了在AI驅動的開發流程中,結構化、高質量的開發文檔如何成為連接“模糊想法”與“精準代碼”的關鍵橋梁,有效打通AI編程的“最后一公里”。 ...
副本機制(Replication),是指分布式系統在多個節點間保存有相同數據的冗余,即副本(Replica/copy)。當出現某一個節點的數據丟失時,可以從副本上讀取到數據。數據副本是分布式系統中解決數據丟失問題的唯一手段。 合適的做法并非以機器作為副本單位,而是將數據劃分為合理的數據段,以數據段為 ...
物理時鐘在分布式系統中難以完美同步,導致無法僅憑物理時間戳來精確判斷事件的因果順序。邏輯時鐘為此而生。 蘭伯特邏輯時鐘 蘭伯特邏輯時鐘(Lamport Logical Clock)為系統中的每個事件分配一個單調遞增的數字(時間戳),用于捕捉事件間的偏序關系(Happened-Before Relat ...
租約(Lease) 機制是分布式系統中一種至關重要的協調工具,廣泛應用于節點狀態判定、領導者選舉、分布式鎖、資源管理等場景。其核心思想是通過一個帶有時間限制的授權(Time-bounded Promise) 來確保在不確定環境下的行為一致性和系統可靠性。 Lease機制的運行邏輯主要包括以下要點。 ...
還在用傳統的builder模式來實例化構建對象嗎?來,給你的程序注入點新鮮血液 業務導向的Builder模式在AuditSaveVO中的卓越實踐 在復雜的業務系統開發中,我們經常面臨如何優雅構建數據對象的挑戰。傳統的構造器模式在業務語義表達方面存在明顯不足。今天我們將深入分析一種基于業務語義導向 ...
一、核心思想:不同的并發哲學 樂觀鎖和悲觀鎖是處理數據競爭(多個線程可能同時修改同一數據)的兩種不同策略。它們的區別源于對“沖突發生概率”的不同假設。 二、對比總結先行 特性 悲觀鎖 樂觀鎖 哲學 假設沖突很可能發生 假設沖突不太可能發生 機制 先取鎖,再操作 先操作,更新前再檢查沖突 實現 syn ...
將單機問題轉化為分布式解決方案時,首要任務是對問題進行分解,使得集群中的每臺機器負責處理原問題的一個子集。無論是計算任務還是存儲任務,其操作對象都是數據。因此,如何將海量數據有效地分解并分配到集群的不同節點上,即數據分布(也常稱為數據分片,Data Partitioning/Sharding),是構 ...
在分布式系統中,有效應對節點故障、網絡分區延遲和數據一致性等挑戰至關重要。本文將剖析保障分布式系統可靠性的核心機制:數據分片實現水平擴展,冗余副本保障數據高可用,租約(Lease)機制優化節點狀態共識與資源管理,多數派(Quorum)原則確保操作的一致性,Gossip等去中心化協議高效同步集群狀態。 ...
序列化:數據跨越邊界的翻譯官 序列化(Serialization)用于描述RPC服務接口和數據結構。在RPC通信中,客戶端和服務器之間傳輸的數據通常是結構化的,如調用方法、請求參數、返回值等。這些結構化數據需要通過序列化過程轉換為二進制流,以便在網絡中進行傳輸。 目前,常見的跨語言序列化編碼方式包括 ...
自研RPC協議:為性能而生的賽道利器 盡管gRPC憑借其標準化、跨語言和基于HTTP/2的強大特性,在公網和云原生環境中大放異彩,但在某些特定的內網環境中,對性能、延遲和資源占用的要求可能更為苛刻。HTTP/2雖然高效,但其幀結構和頭部處理機制相較于專為內網設計的極簡協議,仍可能引入不必要的開銷。 ...
gRPC:云原生時代的通信標準 gRPC將HTTP/2作為其傳輸層,并在此基礎上定義了自身的通信語義。gRPC支持四種服務方法類型,它們都映射到HTTP/2的流模型上。 1)Unary RPC: 客戶端發送單個請求,服務器返回單個響應(類似傳統請求-響應)。 2)Server Streaming R ...
頭部壓縮 (HPACK) 在HTTP/1中,每個請求和響應都會發送大量重復的頭部信息,比如 Cookie、User Agent、Accept 等,會使得大量帶寬被這些冗余的數據占用。為了解決這個問題,HTTP/2引入了HPACK算法來壓縮頭部信息。HPACK算法有兩個主要的特性。 1)靜態表(Sta ...
云原生計算基金會(Cloud Native Computing Foundation,CNCF)是一個非盈利的開源組織,專注于推動云原生計算的發展和標準化。而gRPC(Google Remote Procedure Call)是由Google發起并開源的高性能、跨語言RPC框架。2017年,Goog ...
服務間通信的效率與可靠性是系統性能和穩定性的關鍵。遠程過程調用(RPC)作為跨進程、跨機器交互的核心機制,其傳輸協議的設計至關重要。一個優秀的RPC傳輸協議需要應對三大挑戰:1)跨語言、跨平臺的數據表示與解析;2)保障網絡傳輸的完整性、順序性與效率;3)在服務間建立清晰統一的調用約定。 本文將從 H ...