服务与路由
服务与路由是 API7 网关中流量路由的基本构成要素。二者共同定义网关如何匹配传入请求,以及将请求代理到哪里。
服务
服务是共享后端(上游)和插件配置的一组路由的逻辑集合。在微服务架构中,一个服务通常代表一项业务能力或一个微服务,例如“用户服务”或“支付服务”。
主要字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 服务的唯一名称。最多 100 个字符。 |
type | string | 否 | http(默认)或 stream。 |
hosts | array | 否 | 服务接受的域名列表。最多 32 项。 |
path_prefix | string | 否 | 监听路径前缀,必须以 / 开头。 |
strip_path_prefix | boolean | 否 | 如果为 true(默认),代理到上游前会移除 path_prefix。 |
upstream | object | 否 | 后端目标配置。 |
plugins | object | 否 | 应用于此服务中所有路由的插件。 |
路由
路由为服务内的传入请求定义具体匹配规则,例如 URI、HTTP 方法和主机。请求匹配路由后,网关会应用定义的策略,并将请求代理到服务的上游。
主要字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 路由的唯一名称。 |
paths | array | 是 | 要匹配的 URL 路径列表(位于 path_prefix 之后)。最多 64 项,每项必须以 / 开头。 |
methods | array | 否 | 允许的 HTTP 方法,例如 GET、POST。如果为空,则允许所有方法。 |
vars | array | 否 | 使用 API7 表达式定义的高级匹配规则。 |
priority | integer | 否 | 匹配优先级,值越大优先级越高,默认为 0。 |
enable_websocket | boolean | 否 | 为路由启用 WebSocket 代理。 |
plugins | object | 否 | 此路由专用的插件。 |
请求流程
下图展示了请求如何通过路由和服务流向后端:
企业版与开源版工作流对比
在 API7 企业版中,配置变更遵循受控的生命周期,以确保稳定性和可审计性。
| 特性 | 开源 APISIX | API7 企业版 |
|---|---|---|
| 持久化 | 通过 etcd 立即更新数据面。 | 在控制面数据库中保存为服务模板。 |
| 版本控制 | 实体没有内置版本控制。 | 从模板显式创建服务版本。 |
| 部署 | 保存后更改立即生效。 | 必须将版本发布到网关组。 |
| 审计 | 变更跟踪能力有限。 | 完整的审计日志和版本历史。 |