關於 伺服器開發的一些思考 16 01 31

2021-07-09 18:43:50 字數 610 閱讀 4625

最近在閱讀一些開源專案,從中學習優秀的設計理念,並且與以往自己做過的專案 經驗進行對照,以求將優秀的設計理念融入進實際的開發之中。雖然這在很大程度上是屬於重複造輪子的行動,但是,沒錯,這就是在重複造輪子,而且我也喜歡重複造輪子,從大二重新實現了struts2的時候,就開始了造輪子之路。對業務開發的厭惡尤其加重了這方面的趨勢,以後這將是工作的重點。

專案中的伺服器採用了reactor機制,跨平台的實現中,windows平台使用select實現,linux平台使用了更高效的epoll。這裡所謂的事件是純粹的從tcp緩衝區中的讀和寫操作,和業務有隔離。有事件發生之後,如果是讀事件,就讀入伺服器自己的資料緩衝層,然後解析資料。一次讀入將包含大量的資料報,根據頭部解析然後傳送到不同的資料報的處理邏輯之中。這個處理過程構成了伺服器網路層的骨架,業務邏輯在這個骨架之下進行編寫。專門對於業務邏輯的抽象和處理,是另一門很有趣的藝術,上一任開發者在業務領域運用了大量oo領域的設計理念,對於設計模式的理解尤其深刻,這個有時間的話隨後在別的文章裡討論。

ace的設計非常龐大,如果不諳其設計思想,會帶來非常大的災難,所以ace就 當做最後一道門檻了。但最近讀了陳碩自己寫的muduo庫,又對照來了nginx伺服器和libevent庫,對伺服器開發的理解更有所加深。記錄一下,隨後深入展開。

關於提高伺服器效能的一些思考

平常的工作中,在衡量伺服器的效能時,經常會涉及到幾個指標,load cpu mem qps rt,其中load cpu mem來衡量機器效能,qps rt來衡量應用效能。一般情況下對於機器效能,load cpu mem是越低越好,如果有乙個超過了既定指標都代表著可能出現了問題,就需要盡快解決 當然有...

關於開發的一些思考

單頁面應用真正開始像乙個應用。多頁面是乙個鬆散的結構,即使有個打包工具,可以使用webpack進而使用模組化。但每個頁面是封閉的結構。模擬小程式,小程式每個頁面同樣是封閉,即使可以通過本地存貯進行資料共享,如同多頁面也可以額本地儲存進行資料共享。但有一點無論是多頁面還是小程式都沒有做到的。但是單頁面...

Go遊戲伺服器開發的一些思考(七) Redis

在使用redis時,有些細節必須了解,這樣才能更好的指導程式設計師使用redis做開發 redis業務邏輯是在乙個執行緒中進行的。了解這點非常重要。在使用redis命令時,對於時間複雜度為o n 的命令,心中需要有個警鐘,這裡n的規模會是多大。若應用場景中n的規模會很大,則把這個命令寫進 對於red...