libevent libuv性能對比 為什么有很多出名開源的C/C 方面的高性能網絡庫,比如libevent,boost-asio,有些企業(yè)還要自己寫?
為什么有很多出名開源的C/C 方面的高性能網絡庫,比如libevent,boost-asio,有些企業(yè)還要自己寫?我認為,是構建輪子還是直接使用開源庫,很大程度上取決于部門負責人的個人喜好。曾幾何時
為什么有很多出名開源的C/C 方面的高性能網絡庫,比如libevent,boost-asio,有些企業(yè)還要自己寫?
我認為,是構建輪子還是直接使用開源庫,很大程度上取決于部門負責人的個人喜好。曾幾何時,c開發(fā)人員熱衷于重新構建輪子,那么為什么有些企業(yè)要自己編寫呢?我在項目開始時不知道這個庫的存在,我不想以后再介紹它。
2)許多第三方庫依賴于許多其他第三方庫。要引進a館,就得引進B館、C館、D館,這無疑增加了院系成員的學習成本。
3)第三方開源庫通常會頻繁更新。如果你知道有一個bug,你想更新它嗎?基礎庫的更新無疑會花費更多的開發(fā)時間和測試時間。
4)使項目整體可控。一旦引入的開放源代碼庫出現(xiàn)問題并且項目團隊不熟悉它,這將是災難性的。
5)現(xiàn)有開源庫過于復雜,學習成本高,團隊成員水平參差不齊。
最后,附上一本我前段時間讀過的書。
本文是作者《一個程序員的奮斗史》悟空問答原創(chuàng)文章,未經允許轉載,抄襲將被追究
tomcat nio和netty的區(qū)別?
在IO方面,有五種概念模型:阻塞I/O、非阻塞I/O、I/O多路復用(選擇和輪詢)、信號驅動I/O(sigio)、異步I/O(POSIX AIO)功能。
Tomcat是HTTP層,所以我建議HTTP選擇Tomcat(或其他成熟的HTTP服務器),不是說netty不好,但這是你的選擇。
Netty是一個網絡組件,TCP、UDP、HTTP都可以做,不過官方文檔都是一些Hello world級別的。如果您非常了解HTTP的結構,那么您可以制作一個比基于netty的Tomcat更好的HTTP服務器。Netty是一個基于NiO(nonblocking I/O)的網絡通信框架。與bio(blocking I/O)相比,它的并發(fā)性能有了很大的提高。所以netty的并發(fā)性很高。
netty和Tomcat的最大區(qū)別在于通信協(xié)議。Tomcat基于HTTP協(xié)議,其本質是一個基于HTTP協(xié)議的web容器。然而,內蒂是不同的。它可以通過編程定制各種協(xié)議,因為netty可以通過編解碼器本身對字進行編碼/解碼,并完成類似redis access的功能。這是netty和Tomcat最大的區(qū)別。Netty需要自己解碼來完成握手和其他操作。Netty是一個網絡組件。Tomcat是一個web容器。