原创 一致性算法—Paxos、Raft、ZAB

寫在前面 1、分佈式系統對fault tolerence的一般解決方案是state machine replication(狀態機複製)。 2、分佈式一致性算法的一種更準確的說法應該是:state machine replicat

原创 兩種高效的事件處理模型—Reactor和Proactor

隨着網絡設計模式的興起,Reactor和Proactor事件處理模式應運而生。同步I/O模型通常用於實現Reactor模式,異步I/O模型則用於實現Proactor模式。 一、Reactor(反應堆/器) Reactor 是這樣一

原创 Posix線程的鎖

Posix線程中的鎖 pthread是POSIX threads的簡稱,是POSIX的線程標準 鎖是實現線程同步的一種方式 1、互斥鎖(或稱互斥量Mutex) 互斥鎖是用於控制多個線程對他們之間共享資源互斥訪問的一個信號量。 頭文

原创 I/O多路複用:select、poll、epoll

I/O多路複用 I/O複用使得程序能同時監聽多個文件描述符,這對提高程序的性能至關重要。通常,網絡程序在下列情況下需要使用I/O複用技術: (1)客戶端程序要同時處理多個socket。比如非阻塞connect技術。 (2)客戶端程

原创 線程和進程的概念及其通信、同步方式

1、線程 1.1、線程的基本概念 線程是進程中執行運算的最小單位,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤

原创 分佈式相關的經典理論基礎

  今天來講幾個概念:單體應用和分佈式集羣相關概念、CAP、ACID、BASE等相關理論 1、單體應用、集羣、分佈式的相關概念 「單體應用」將一個應用程序的所有功能模塊都打包成一個獨立的單元,部署在一臺服務器上運行,對外提供服務。當業務增

原创 Redis 事務閱讀簡記

注:文章大部分摘自《Redis開發與運維》 部分內容源自自己理解,請讀者 “按需獲取”  一、事務相關概念介紹          1、數據庫事務定義:         數據庫事務(Database Transaction) ,是指作爲單個

原创 Redis Pipeline 閱讀簡記

一、Pipeline相關概念簡介     概念1、Round Trip Time(RTT-往返時間):     Redis客戶端執行一條命令分爲如下四個過程:     (1)發送命令、(2)命令排隊、(3)命令執行、(4)返回結果   

原创 生產者消費者模型三(多-單模型)

 生產者——消費者問題(producer-consumer),又名:有界緩衝區(bounded-buffer)問題 多生產者——單消費者 設計要點: 當緩衝區滿已滿,而此時生產者還想向緩衝區中放入一個新的數據項時。則讓生產者睡眠,待消

原创 生產者消費者模型四(多-多模型)

 生產者——消費者問題(producer-consumer),又名:有界緩衝區(bounded-buffer)問題 多生產者——多消費者 設計要點: 當緩衝區滿已滿,而此時生產者還想向緩衝區中放入一個新的數據項時。則讓生產者睡眠,待消

原创 生產者消費者模型(多-多模型/面向對象思想實現)

本篇文章將用c++的面向對象思想,實現生產者消費者模型的代碼編寫。 個人感悟: 1、多生產者多消費者模型的共享競爭關係:對緩衝區的共享和競爭:生產者和消費者都需要對共享緩衝區進行操作,存入產品或消費產品。mtx二值信號量和條件信號量的搭配

原创 生產者消費者模型一(單-單模型)

 生產者——消費者問題(producer-consumer),又名:有界緩衝區(bounded-buffer)問題 本文介紹單生產者——單消費者的代碼實現 設計要點: 當緩衝區滿已滿,而此時生產者還想向緩衝區中放入一個新的數據項時。則

原创 C++ 11併發介紹

注:本文內容摘自:《C++併發編程實戰》——Anthony Williams著  周全等譯自己將其中的精華內容摘抄出來,做以筆記,加深印象與理解!1.1何謂併發:最簡單和最基本的併發,是指兩個或更多獨立的活動同時發生。1.1.1 計算機系