这一波在第四层。
积æžå¼€å‘ä¸ï¼Œ0.1版本è¿ä»£å¯èƒ½è¾ƒå¿«
Fourth是一个Rust实现的Layer 4代ç†ï¼Œç”¨äºŽç›‘å¬æŒ‡å®šç«¯å£TCP/KCPæµé‡ï¼Œå¹¶æ ¹æ®è§„则转å‘åˆ°æŒ‡å®šç›®æ ‡ï¼ˆç›®å‰åªæ”¯æŒTCP)。
为了确ä¿èŽ·å¾—您架构下的最佳性能,请考虑自行编译,首选需è¦ç¡®ä¿æ‚¨æ‹¥æœ‰Rust工具链。
bash
$ cd fourth
$ cargo build --release
将在target/release/fourth
生æˆäºŒè¿›åˆ¶æ–‡ä»¶ï¼Œæ‚¨ä¹Ÿå¯ä»¥ä½¿ç”¨cargo install --path .
æ¥å®‰è£…二进制文件。
或者您也å¯ä»¥ä½¿ç”¨Cargo直接安装:
bash
$ cargo install fourth
或者您也å¯ä»¥ç›´æŽ¥ä»ŽReleaseä¸ä¸‹è½½äºŒè¿›åˆ¶æ–‡ä»¶ã€‚
Fourth使用yamlæ ¼å¼çš„é…置文件,默认情况下会读å–/etc/fourth/config.yaml
,您也å¯ä»¥è®¾ç½®è‡ªå®šä¹‰è·¯å¾„到环境å˜é‡FOURTH_CONFIG
,如下是一个最å°æœ‰æ•ˆé…置:
```yaml version: 1 log: info
servers: proxy_server: listen: - "127.0.0.1:8081" default: remote
upstream: remote: "tcp://www.remote.example.com:8082" # proxy to remote address ```
内置两个的upstream:ban(立å³ä¸æ–连接)ã€echo(返回读到的数æ®ï¼‰ã€‚更详细的é…ç½®å¯ä»¥å‚考示例é…置。
在4C2Gçš„æœåŠ¡å™¨ä¸Šæµ‹è¯•ï¼š
使用Fourth代ç†åˆ°Nginx(直连QPS 120000): ~70000req/s (测试命令:wrk -t200 -c1000 -d120s --latency http://proxy-server:8081
)
使用Fourth代ç†åˆ°æœ¬åœ°iperf3:8Gbps
尽管ç»è¿‡äº†å¾ˆå¤šå°è¯•ï¼Œæˆ‘们å‘现目å‰ä¸€äº›Rust下é¢çš„iouring实现å˜åœ¨é—®é¢˜ï¼Œæˆ‘们使用的iouring库实现尽管在åžåé‡ä¸Šå¯ä»¥åšåˆ°å•çº¿ç¨‹20Gbps(相比之下Tokio仅有8Gbps),但在QPS上å˜åœ¨æ€§èƒ½æŸå¤±è¾ƒå¤§çš„é—®é¢˜ã€‚å› æ¤åœ¨æœ‰æˆç†Ÿçš„io_uring实现之å‰ï¼Œæˆ‘们ä»ç„¶é€‰æ‹©epoll。之åŽæˆ‘们会æŒç»å…³æ³¨ç›¸å…³è¿›å±•ã€‚
å¯èƒ½ä»¥åŽä¼šä¸ºLinuxé«˜å†…æ ¸ç‰ˆæœ¬çš„ç”¨æˆ·æä¾›å¯é€‰çš„io_uringåŠ é€Ÿã€‚
Fourth以Apache-2.0å议开æºã€‚