BeetleX輕量級高性能 TCP 通訊組件
BeetleX
beetleX是基于dotnet core實現(xiàn)的輕量級高性能的TCP通訊組件,使用方便、性能高效和安全可靠是組件設計的出發(fā)點!開發(fā)人員可以在Beetlx組件的支持下快帶地構建高性能的TCP通訊服務程序,在安全通訊方面只需要簡單地設置一下SSL信息即可實現(xiàn)可靠安全的SSL服務。
使用方便性
beetleX網(wǎng)絡流讀寫是基于Stream標準來構建,僅僅基于Stream的基礎讀寫對于應用者來說還是過于繁瑣;組件為了更方便進行網(wǎng)絡數(shù)據(jù)處理在Stream的基礎之上擴展了一系列的讀寫規(guī)則:ReadLine、ReadInt、WriteLine、WriteInt等一系列簡便方法,在這些方法的支持下使用者就可以更輕松地處理數(shù)據(jù);為了在網(wǎng)絡通訊中更好的兼容其他平臺協(xié)議以上方法都兼容Big-Endian和Little-Endian不同方式。為了更好地利用現(xiàn)有序列化組件,組件通過IPacket接口規(guī)范消息擴展,通過實現(xiàn)不同的Packet解釋器,即可以實現(xiàn)基于Protobuf,json和Msgpack等方式的對象數(shù)據(jù)傳輸。
高性能特性
beetleX的高性能是建立在內(nèi)部一個數(shù)據(jù)流處理對象PipeStream,它是構建在Stream標準之上;它和.NET內(nèi)置的NetworkStream最大的差別是PipeStream的讀寫基于SocketAsyncEventArgs實現(xiàn),這正是在編寫高性能網(wǎng)絡數(shù)據(jù)處理所提倡的模式。PipeStream不僅在網(wǎng)絡數(shù)據(jù)處理模式上有著性能的優(yōu)勢,在內(nèi)存讀寫上和MemoryStream也有著很大的區(qū)別;由于PipeStream的內(nèi)存塊是以一個基于鏈表的SocketAsyncEventArgs Buffer 組成,因此PipeStream在寫入大數(shù)據(jù)的情況并不存在內(nèi)存擴容和復制的問題;因為PipeStream基礎內(nèi)存是SocketAsyncEventArgs Buffer,所以在數(shù)據(jù)和網(wǎng)絡緩存讀寫并不存在內(nèi)存塊復制過程。如果在應用中中使用PipeStream相應的BinaryReader和IBinaryWriter讀寫規(guī)范,那大部分數(shù)據(jù)處理基本不存在內(nèi)存復制過程,從而讓數(shù)據(jù)處理性能更高效。
以下是PipeStream的結構:

性能
beetleX的性能到底怎樣呢,以下簡單和DotNetty進行一個網(wǎng)絡數(shù)據(jù)交換的性能測試,分別是1K,5K和10K連接數(shù)下數(shù)據(jù)請求并發(fā)測試
DotNetty測試代碼
public override void ChannelRead(IChannelHandlerContext context, object message)
{
var buffer = message as IByteBuffer;
context.WriteAsync(message);
}
Beetlex 測試代碼
public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
{
server.Send(e.Stream.ToPipeStream().GetReadBuffers(), e.Session);
base.SessionReceive(server, e);
}
測試結果
1K connections


5K connections


10K connections


