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