Socket是乙個好的設計嗎?

時間 2021-05-12 00:08:46

1樓:Djvu

單獨說socket沒有意思,更多的是要考慮TCP網路棧。

評價乙個東西好不好,先看看其產生的背景,TCP最開始是用於網路盒子的控制層的,所以說它其實更擅長的是control plane,而不是data plane。

再回到題主的答案,從現在的角度看就是設計不是特別特別合理。因為當今我們對data plane的需求越來越強烈。主要問題是太複雜,導致的拷貝,上下文切換等開銷太高;另外乙個就是kernel資料結構有很多是共享的,也就導致了lz提到的可擴充套件性。

解決辦法有三條:

優化核心TCP。比如繫結佇列到CPU,緩解多核下的鎖競爭問題。

使用使用者態網路棧,比如mTCP,openonLoad這些網路庫,也可以基於Intel的DPDK來做。

使用硬體來加速,比如遠端記憶體訪問(RDMA), 硬體off-load技術。

2樓:100Tbps

x86是乙個好的設計嗎?人類選擇的多數技術,80%都不是學術上最好的。但是人類會打補丁。比如新增指令集,epool,SO_REUSEPORT等。

如何設計乙個好的Model與Controller(MVC)?

騰飛 我的看法是別太硬套MVC吧!還有設計模式,那些只是培養你軟體架構,解藕的這些常用方法,把那些融入但你的思維當時方式中就行。記得一些最基本的原則,解藕,解藕,解藕 對於MVC,實際上就是把顯示和資料處理分離,顯示和使用者互動分離。view只負責現實,根據資料來顯示內容。什麼時候需要重新整理,由c...

存錢真的是乙個好的習慣嗎

Fiona 是的。存錢會讓你在遇到事情的時候有尊嚴,有底氣。但肯定不能影響自己的基本生活和必要社交以及繼續學習,不然存錢也沒地花錢,也沒什麼人生樂趣了。每個月固定的存工資的固定百分比。 晴天愛好者 開始存錢後,發現存錢真是乙個好習慣,原因是主要是 避免買很多無用的東西,消費更理性了 有一定儲蓄後,心...

Windows 的登錄檔是個好的設計嗎?

反正我覺得挺好用的,不用解析檔案格式,而且可以隔離不同使用者的配置,一般windows下要儲存全域性資料我都全塞登錄檔裡 就算用到sqlite的話,路徑也會寫登錄檔 指望使用者指定配置目錄不太現實,而且確實很多種情況下程式並沒有寫檔案的許可權。 魯哈花 登錄檔是系統元件,主要給作業系統和應用程式使用...