C++高性能服務器框架 – SYLAR簡介

視頻地址

[C++高級教程]從零開始開發服務器框架(sylar)

視頻教程內容:

1.日誌模塊

支持流式日誌風格寫日誌和格式化風格寫日誌,支持日誌格式自定義,日誌級別,多日誌分離等等功能
流式日誌使用:SYLAR_LOG_INFO(g_logger) << “this is a log”;
格式化日誌使用:SYLAR_LOG_FMT_INFO(g_logger, “%s”, “this is a log”);
支持時間,線程id,線程名稱,日誌級別,日誌名稱,文件名,行號等內容的自由配置

2.配置模塊

採用約定由於配置的思想。定義即可使用。不需要單獨去解析。支持變更通知功能。使用YAML文件做爲配置內容。支持級別格式的數據類型,支持STL容器(vector,list,set,map等等),支持自定義類型的支持(需要實現序列化和反序列化方法)使用方式如下:

static sylar::ConfigVar<int>::ptr g_tcp_connect_timeout =
	sylar::Config::Lookup("tcp.connect.timeout", 5000, "tcp connect timeout");

定義了一個tcp連接超時參數,可以直接使用 g_tcp_connect_timeout->getValue() 獲取參數的值,當配置修改重新加載,該值自動更新
上述配置格式如下:

tcp:
    connect:
            timeout: 10000

3.線程模塊

線程模塊,封裝了pthread裏面的一些常用功能,Thread,Semaphore,Mutex,RWMutex,Spinlock等對象,可以方便開發中對線程日常使用
爲什麼不適用c++11裏面的thread
本框架是使用C++11開發,不使用thread,是因爲thread其實也是基於pthread實現的。並且C++11裏面沒有提供讀寫互斥量,RWMutex,Spinlock等,在高併發場景,這些對象是經常需要用到的。所以選擇了自己封裝pthread

4.協程模塊

協程:用戶態的線程,相當於線程中的線程,更輕量級。後續配置socket hook,可以把複雜的異步調用,封裝成同步操作。降低業務邏輯的編寫複雜度。
目前該協程是基於ucontext_t來實現的,後續將支持採用boost.context裏面的fcontext_t的方式實現

5.協程調度模塊

協程調度器,管理協程的調度,內部實現爲一個線程池,支持協程在多線程中切換,也可以指定協程在固定的線程中執行。是一個N-M的協程調度模型,N個線程,M個協程。重複利用每一個線程。

6.IO協程調度模塊

繼承與協程調度器,封裝了epoll(Linux),並支持定時器功能(使用epoll實現定時器,精度毫秒級),支持Socket讀寫時間的添加,刪除,取消功能。支持一次性定時器,循環定時器,條件定時器等功能

7.Hook模塊

hook系統底層和socket相關的API,socket io相關的API,以及sleep系列的API。hook的開啓控制是線程粒度的。可以自由選擇。通過hook模塊,可以使一些不具異步功能的API,展現出異步的性能。如(mysql)

8.Socket模塊

封裝了Socket類,提供所有socket API功能,統一封裝了地址類,將IPv4,IPv6,Unix地址統一起來。並且提供域名,IP解析功能。

9.ByteArray序列化模塊

ByteArray二進制序列化模塊,提供對二進制數據的常用操作。讀寫入基礎類型int8_t,int16_t,int32_t,int64_t等,支持Varint,std::string的讀寫支持,支持字節序轉化,支持序列化到文件,以及從文件反序列化等功能

10.TcpServer模塊

基於Socket類,封裝了一個通用的TcpServer的服務器類,提供簡單的API,使用便捷,可以快速綁定一個或多個地址,啓動服務,監聽端口,accept連接,處理socket連接等功能。具體業務功能更的服務器實現,只需要繼承該類就可以快速實現

11.Stream模塊

封裝流式的統一接口。將文件,socket封裝成統一的接口。使用的時候,採用統一的風格操作。基於統一的風格,可以提供更靈活的擴展。目前實現了SocketStream

12.HTTP模塊

採用Ragel(有限狀態機,性能媲美彙編),實現了HTTP/1.1的簡單協議實現和uri的解析。基於SocketStream實現了HttpConnection(HTTP的客戶端)和HttpSession(HTTP服務器端的鏈接)。基於TcpServer實現了HttpServer。提供了完整的HTTP的客戶端API請求功能,HTTP基礎API服務器功能

13.Servlet模塊

仿照java的servlet,實現了一套Servlet接口,實現了ServletDispatch,FunctionServlet。NotFoundServlet。支持uri的精準匹配,模糊匹配等功能。和HTTP模塊,一起提供HTTP服務器功能

14.其他相關

聯繫方式:
QQ:564628276
郵箱:[email protected]
微信:sylar-yin
QQ羣:8151915(sylar技術羣)
個人主頁:www.sylar.top
github:https://github.com/sylar-yin/sylar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章