原创 C++高性能服務框架revolver:base結構分析

revolver基礎庫的結構圖如下: 主要是三部分:reactor模塊、關聯組件模塊、獨立組件。 1.reactor reactor模塊主要是實現網絡的分時複用設計的模塊,可以在同一個線程模式下處理來自網絡的讀寫事件、內部消息事件、定

原创 C++高性能服務框架revolver:同時支持100萬個的定時事件的定時器

在高性能的服務器程序當中,定時器是必不可少的部件,而且定時器的效率是直接影響到服務的性能。在衆多的開源項目中,定時器設計都有各有各的方法,例如ACE和libEvent都採用了最小堆的算法實現,還有其他的開源項目採用平衡二叉樹來做定時的器管

原创 linux和windows下UDP發送效率的有趣比較

今天在測試UDP發送效率和RUDP代碼時效的問題,偶然的機會發現一個比較有趣的事情,先把我的測試代碼貼上來看看,代碼如下: int test_udp() { //_beginthread(sock_recv, 0, NULL);

原创 一種服務器的負載均衡選取算法

在很多分佈式系統裏面會遇到一個均衡節點選取的問題:一般是1個負載管理服務器,多個應用服務單元。當有連接或者業務來是,先會去詢問負載管理器獲取一個負載輕的服務單元,一般的選取就是選取負載最輕的那個。通常情況下是不會有問題的,如果你的應用服務

原创 關於C函數memcpy的實現細節思考

前段時間和朋友討論關於C基礎函數memcpy的實現細節時,收穫頗多。這個函數在C / C++編程領域中使用率是比較高的(可能排在前10左右)。但鮮有人去研究其實現原理。爲了弄清楚其實現,我給自己出了一道題目,就是用C實現一個memcpy的

原创 用C/C++實現對STORM的運行信息查看和控制

最近公司有個需求,需要在後端應用服務器上實時獲取STORM集羣的運行信息和topology相關的提交和控制,經過幾天對STORM UI和CMD源碼的分析,得出可以通過其thrift接口調用實現這些功能。先下載一個thrift庫進行編碼和安

原创 supervisord監控詳解

1 Supervisord的安裝 Supervisord是運行在python環境下的服務監控程序。所以在安裝supervisord之前必須有python環境。   如果系統沒有PYTHON,鍵入:yum install python(CE

原创 C的字符串操作接口實現

最近在寫一個關於用HTTP控制storm的的UI功能,已經實現完成,採用在nginx裏面加入對應的模塊調用來實現,模塊中調用一個動態加載的SO,這個SO用THRIFT和zookeeper client實現對storm的控制和信息的存儲固化

原创 C++高性能服務框架revolver:下載、編譯和工程介紹

昨天我把自己的第一個開源項目revolver代碼提交到了GitHub上,revolver是一個C++開發的LINUX網絡服務框架。這個代碼算是我從2012年到現在的積累,開源的目的是希望高手指正問題和分享自己的一些經驗,我會持續改進和優化

原创 C++高性能服務框架revolver:RUDP(可靠UDP)算法詳解

上一篇BLOG已經介紹了revolver RUDP的傳輸性能、基本的框架和接口,這篇文章我重點講述RUDP的實現細節。在RUDP的模塊中最爲重要的是其收發緩衝控制和CCC發送窗口控制、CCC發送慢啓動控制、CCC快恢復控制等幾個過程。(關

原创 C++高性能服務框架revover:rudp總體介紹(可靠UDP傳輸)

在revolver框架中實現了一個高效可靠的RUDP通信方式,這個通信方式是基於UDP實現一種模擬TCP傳輸數據的行爲。在很多實際應用中,udp/TCP都不是最好的通信方式,例如:點對點文件傳輸、視頻數據高速傳輸、服務器之間大數據備份同步

原创 C++高性能服務框架revolver:協議接口描述和翻譯語言

在一個稍微複雜的系統中會涉及到多語言編程,例如:後端C++和JAVA,腳本用LUA,前端可能是C++ AS等等。所以所有模塊之間的協議統一變得非常重要,這樣做的目的是減少中間的調試和差錯。在revolver框架中,實現了一個基於簡單的接口

原创 C++高性能服務框架revolver:core結構與接口介紹

revolver的核心部件庫core是基於revolver base之上進行封裝的,實現TCP連接管理、消息隱射管理、服務登記和感知 、IFrame框架和插件等。以下是core的模塊結構圖: 1 Core Packet CorePa

原创 redis數據記錄過期源代碼分析

最近在分析redis源代碼,一直想寫一點相關的東西,空不出時間來整理。今天好不容易空出時間來,把自己對redis關於記錄過期和過期檢測的流程理解寫來。用過redis的人都知道,redis對相關記錄的過期設置和memcached是相似的

原创 Merkle Tree算法詳解

Merkle Tree是Dynamo中用來同步數據一致性的算法,Merkle Tree是基於數據HASH構建的一個樹。它具有以下幾個特點: 1、數據結構是一個樹,可以是二叉樹,也可以是多叉樹(本BLOG以二叉樹來分析) 2、Merkle