eSockdTCP/SSL 套接字服務(wù)器
eSockd 是 Erlang 開發(fā)的通用的非堵塞 TCP/SSL 套接字服務(wù)器。
主要特性:
- 通用非堵塞 TCP/SSL 套接字服務(wù)器
- 接受者池和異步 TCP 接受
- UDP/DTLS 服務(wù)器
- 最大連接管理
- 通過對等地址允許/拒絕
- 代理協(xié)議 V1/V2
- Keepalive 支持
- 速率限制
- IPv6 支持
性能表現(xiàn):
在 8 核處理器、32G內(nèi)存的 ubuntu/14.04 服務(wù)器上測試結(jié)果如下:
250K concurrent connections, 50K messages/sec, 40Mbps In/Out consumed 5G memory, 20% CPU/core
一個簡單的 Echo 服務(wù)器:
-module(echo_server).
-export([start_link/1]).
start_link(SockArgs) ->
{ok, spawn_link(?MODULE, init, [SockArgs])}.
init(SockArgs = {Transport, _Sock, _SockFun}) ->
{ok, NewSock} = esockd_connection:accept(SockArgs),
loop(Transport, NewSock, state).
loop(Transport, Sock, State) ->
case Transport:recv(Sock, 0) of
{ok, Data} ->
{ok, Name} = Transport:peername(Sock),
io:format("~p: ~s~n", [Name, Data]),
Transport:send(Sock, Data),
loop(Transport, Sock, State);
{error, Reason} ->
io:format("tcp ~s~n", [Reason]),
{stop, Reason}
end.評論
圖片
表情
