这一波在第四层。
Fourth是一个Rust实现的Layer 4代ç†ï¼Œç”¨äºŽç›‘å¬æŒ‡å®šç«¯å£TCPæµé‡ï¼Œå¹¶æ ¹æ®è§„则转å‘åˆ°æŒ‡å®šç›®æ ‡ã€‚
为了确ä¿èŽ·å¾—您架构下的最佳性能,请考虑自行编译,首选需è¦ç¡®ä¿æ‚¨æ‹¥æœ‰Rust工具链。
bash
$ cd fourth
$ cargo build --release
将在target/release/fourth
生æˆäºŒè¿›åˆ¶æ–‡ä»¶ï¼Œæ‚¨ä¹Ÿå¯ä»¥ä½¿ç”¨cargo install --path .
æ¥å®‰è£…二进制文件。
Fourth使用yamlæ ¼å¼çš„é…置文件,默认情况下会读å–/etc/fourth/config.yaml
,如下是一个示例é…置。
```yaml version: 1 log: info
servers: exampleserver: listen: - "0.0.0.0:443" - "[::]:443" tls: true # å¯åŠ¨SNI分æµï¼Œå°†æ ¹æ®TLS请求ä¸çš„主机ååˆ†æµ sni: proxy.example.com: proxy www.example.com: nginx default: ban relayserver: listen: - "127.0.0.1:8081" default: remote
upstream: nginx: "127.0.0.1:8080" proxy: "127.0.0.1:1024" other: "www.remote.example.com:8082" # 代ç†åˆ°è¿œç«¯åœ°å€ ```
内置两个的upstram:ban(立å³ä¸æ–连接)ã€echo(返回读到的数æ®ï¼‰ã€‚
尽管ç»è¿‡äº†å¾ˆå¤šå°è¯•ï¼Œæˆ‘们å‘现目å‰ä¸€äº›Rust下é¢çš„iouring实现å˜åœ¨é—®é¢˜ï¼Œæˆ‘们使用的iouring库实现尽管在åžåé‡ä¸Šå¯ä»¥åšåˆ°å•çº¿ç¨‹20Gbps(相比之下Tokio仅有8Gbps),但在QPS上å˜åœ¨æ€§èƒ½æŸå¤±è¾ƒå¤§çš„é—®é¢˜ã€‚å› æ¤åœ¨æœ‰æˆç†Ÿçš„io_uring实现之å‰ï¼Œæˆ‘们ä»ç„¶é€‰æ‹©epoll。之åŽæˆ‘们会æŒç»å…³æ³¨ç›¸å…³è¿›å±•ã€‚
å¯èƒ½ä»¥åŽä¼šä¸ºLinuxé«˜å†…æ ¸ç‰ˆæœ¬çš„ç”¨æˆ·æä¾›å¯é€‰çš„io_uringåŠ é€Ÿã€‚
Fourth以Apache-2.0å议开æºã€‚