rust化的反向代理-Pingap 0.6.0版本

pingap

Pingap是类似于nginx的反向代理,基于pingora构建,简单而高效。

客户端请求
转发:pingap.io/api/*
转发:cdn.pingap.io
转发:pingap.io
互联网
Pingap
10.1.1.1,10.1.1.2
10.1.2.1,10.1.2.2
10.1.3.1,10.1.3.2

特性

  • 服务支持配置多个Location,通过host与path筛选对应的location
  • 正则形式重写Path
  • HTTP 1/2 的全链路支持,包括h2c
  • 基于TOML格式的配置,可保存至文件或etcd
  • Upstream与Location的相关配置调整实时生效,其它应用配置更新后,无中断式的优雅更新程序
  • 访问日志的模板化配置,已支30多个相关属性的配置
  • WEB形式的管理后台界面,简单易用
  • 可通过let's encrypt生成tls相关证书
  • 支持同一服务端口监听,使用不同域名的tls证书
  • 支持各种事件的推送:lets_encrypt, backend_status, diff_config, restart等等
  • 丰富的http转发插件:compression, static serve, limit, stats, mock, 等等
  • 提供了不同阶段的统计数据,如upstream_connect_time, upstream_processing_time, compression_time, cache_lookup_timecache_lock_time

启用程序

/opt/pingap/conf目录中加载所有配置,并以后台程序的形式运行,日志写入至/opt/propingapxy/pingap.log

RUST_LOG=INFO pingap -c=/opt/pingap/conf -d --log=/opt/pingap/pingap.log

优雅重启

校验配置是否正确后,发送信号给pingap并启动新的程序接收原有的请求。

RUST_LOG=INFO pingap -c=/opt/pingap/conf -t \
  && pkill -SIGQUIT pingap \
  && RUST_LOG=INFO pingap -c=/opt/pingap/conf -d -u --log=/opt/pingap/pingap.log

自动重启

应用启动后,监听相关配置变化,若有变化则无中断式重启程序加载配置。autoreload参数表示如果只是upstream与location的配置变化,则变更实时生效,无需重启。

RUST_LOG=INFO pingap -c=/opt/pingap/conf \
  && -a -d --autoreload --log=/opt/pingap/pingap.log

应用配置

[upstreams.charts]
addrs = ["127.0.0.1:5000"]

[locations.lo]
upstream = "charts"
path = "/"

[servers.test]
addr = "0.0.0.0:6188"
locations = ["lo"]

所有的应用配置可查阅说明: pingap.toml

请求处理流程

host:HostA, Path:/api/*
Path:/rest/*
顺序执行转发插件
顺序执行转发插件
转发至: 10.0.0.1:8001
转发至: 10.0.0.2:8001
处理完成
转发至: 10.0.0.1:8002
转发至: 10.0.0.2:8002
处理完成
顺序执行响应插件
顺序执行响应插件
顺序执行响应插件
顺序执行响应插件
HTTP服务
Location A
Location B
转发插件列表A
转发插件列表B
上游服务A1
上游服务A2
上游服务B1
上游服务B2
响应插件列表A
响应插件列表B
新的请求
HTTP响应
日志记录

性能测试

CPU: M2, Thread: 1

wrk 'http://127.0.0.1:6188/stats' --latency
Running 10s test @ http://127.0.0.1:6188/stats
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    87.92us   60.91us   3.69ms   89.97%
    Req/Sec    57.32k     2.17k   69.69k    91.09%
  Latency Distribution
     50%   93.00us
     75%  100.00us
     90%  106.00us
     99%  133.00us
  1151171 requests in 10.10s, 320.61MB read
Requests/sec: 113977.63
Transfer/sec:     31.74MB

最低支持rust版本

最低支持的rust版本为1.74

开源协议

This project is Licensed under Apache License, Version 2.0.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值