3 releases
0.2.2 | Jan 23, 2024 |
---|---|
0.2.1 | Jan 19, 2024 |
0.1.6 |
|
#1755 in Network programming
Used in 2 crates
(via satex-serve)
96KB
2.5K
SLoC
Satex
使用RUST
开发的轻量、高性能的HTTP网关,基于tokio
、hyper
、tower
构建。
特点
- 纯异步IO实现
- 丰富的路由组件以及灵活的路由配置
- 内置服务发现、健康检查以及多种负载均衡策略
- 完全兼容tower和tower-http的生态,包括中间件、服务和工具等。
路由
逻辑结构
-
matcher:负责接收并解析进入的HTTP请求。通过精确匹配算法,它能快速地识别出请求的目标路径、方法以及其他相关参数。
-
layer:只有通过
matcher
匹配的请求才会进入layer
层,主要对请求进行增强或过滤。你可以在这一层添加各种过滤逻辑,例如权限验证、限流、日志记录等。它确保只有满足特定条件的请求能够继续传递。 -
service:负责处理经过
layer
层筛选的请求。你可以在这一层实现具体的业务逻辑,例如调用后端服务、处理数据等。
内置组件
-
Matcher
名称 描述 使用文档 Method
根据请求方法(如GET、POST等)进行匹配 文档 Query
根据请求的查询参数进行匹配 文档 Header
根据请求头信息进行匹配 文档 Host
根据请求的主机名进行匹配 文档 Path
根据请求路径进行匹配 文档 RemoteAddr
根据客户端的IP地址进行匹配 文档 Cookie
根据请求的Cookie进行匹配 文档 Time
根据请求时间进行匹配 文档 -
Layer
名称 描述 使用文档 Cors
处理跨域请求 文档 KeepHostHeader
保持原始的Host请求头 文档 PathStrip
从请求路径中删除特定部分 文档 RateLimit
限制请求频率 文档 RewritePath
重写请求的接口地址 文档 SetRequestHeader
设置请求头信息 文档 SetResponseHeader
设置响应头信息 文档 XForward
设置XForward信息 文档 ConcurrentcyLimit
限制同时处理的请求数量 文档 RequestBodyLimit
限制请求体的最大大小 文档 SetStatus
设置响应状态码 文档 -
Service
名称 描述 使用文档 Echo
简单地返回接收到的请求内容 文档 Static
提供静态文件服务 文档 Proxy
反向代理服务,代理请求到另一个服务或地址。 文档 -
Discovery
名称 描述 使用文档 Builtin
内置的服务发现,通过配置的方式注册服务集合,内部会定时检测服务节点的可用性。 文档 -
LoadBalance
名称 描述 使用文档 IpHash
IP哈希负载策略使用客户端的IP地址进行哈希计算,根据哈希值将请求分配给后端服务器。这样可以确保来自同一IP地址的请求始终被发送到同一台服务器,这有助于保持会话和状态信息的持续性。 文档 Random
随机负载策略随机选择一台服务器将请求发送过去。这种策略简单且易于实现,适用于没有特殊需求的情况。 文档 Sequential
顺序负载策略按照服务器列表的顺序依次将请求发送过去。这种策略适用于服务器性能基本一致的情况。 文档 StandBy
备用负载策略在主服务器故障时,将请求切换到备用服务器上。这种策略可以提高系统的可用性和可靠性。 文档 Weight
权重负载策略根据服务器的性能或权重值来分配请求。权重值高的服务器将获得更多的请求,而权重值低的服务器将获得较少的请求。这种策略可以帮助平衡服务器的负载,提高系统的性能和效率。 文档
配置文件
应用启动配置文件为satex.yaml
,具体内容见示例配置。
构建和启动
-
1.构建
-
2.启动
使用
-c
指定配置文件satex.yaml
的路径satex -c exmaples/satex.yaml
License
This project is licensed under the Apache 2.0
Dependencies
~13–24MB
~353K SLoC