netty號稱java高性能網絡庫,為人幫忙中,研究了下,寫了一個demo。反復調試,更改,局域網兩個客戶端同時for循環發10000個20字節的數據包,入庫mysql,居然沒丟。
思路,netty的本身的高性能eventloop機制,接收到數據包后,做簡單處理,然后通過dbcp連接池入庫。假如,入緩存,比如redis,可能更快。
遇到的問題:
1、bind()方法,直接bind(port)即可,重載的bind(host,port)只能接收本機數據。
2、調整緩沖區大小。用netty自帶的方法option(ChannelOption.SO_RCVBUF,1024*1024*2)設置緩沖區為2M。另外,在linux下還需要調整系統底層的進程緩沖區參數,若是在windows下則不必調整系統參數。
代碼:netty-udpServer