mcpField
S
Shenyu

Shenyu

本地服务
shenyu.apache.org云与基础设施8.9k今天更新

关于 Shenyu

Apache ShenYu 是面向服务流量代理与 API 治理的 Java 网关,适用于管理后端服务的团队。它以可扩展插件链结合协议转发、流量控制、动态配置及 AI 和 MCP 能力。

主要功能

  1. 01可扩展的请求插件链
  2. 02HTTP、WebSocket、Dubbo 和 gRPC 路由
  3. 03服务注册与发现
  4. 04认证、限流和容错
  5. 05动态配置与可观测性
  6. 06AI 代理与 MCP 服务插件

适用场景

  1. 01将请求路由到 HTTP 和 RPC 后端
  2. 02为 API 应用认证和限流
  3. 03管理多个网关副本的配置

MCP 相关

MCP 服务插件通过 SSE 和 Streamable HTTP 提供 MCP 支持。ShenYu 也提供 AI 代理和提示词处理能力。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Apache ShenYu

Maven Central 发布版本 Apache 2.0 许可证 CI 状态 Codecov 覆盖率 Docker 拉取次数 通过 Gitpod 参与贡献 向 DeepWiki 提问

官方网站 快速下载

Trendshift 上的 apache/shenyu

概述

Apache ShenYu 是一个基于 Java 的网关,用于服务代理、协议转换和 API 治理。可扩展的插件链负责处理请求,而 ShenYu Admin 管理配置并将其分发到网关副本。

核心功能

领域ShenYu 提供的功能
插件路由与扩展用于处理 HTTP 请求的有序插件链,并在适用时进行选择器和规则匹配。Spring Boot starter 用于选择插件;自定义 Java 插件、SPI 实现和 WASM 插件 API 可扩展网关。
协议与上游服务HTTP 和 Spring Cloud 服务、WebSocket 连接,以及 Apache Dubbo 和 gRPC 后端。可选的 TCP 和 MQTT 监听器可提供额外的入口;SOFA 和 Tars 网关插件可作为外部 plugin-store starter 使用。
注册与发现客户端 SDK 向 Admin 注册服务地址和 API 元数据。注册中心集成支持服务发现;可选的 Kubernetes 控制器会协调 Ingress 和 Endpoints 资源。
安全与流量控制WAF、签名、身份验证插件、负载均衡、速率限制,以及通过 Resilience4j 和 Sentinel 实现的容错;已弃用的 Hystrix 仍可作为外部插件使用(参见 plugin-store-hystrix)。
缓存与转换内存或基于 Redis 的响应缓存、URL 重写、重定向,以及请求/响应转换。
动态配置Admin 持久化插件、选择器、规则、元数据和身份验证数据。默认使用 WebSocket 同步;也可使用 HTTP 长轮询、ZooKeeper、Nacos 和 etcd。Apollo 在弃用版本期间仍可使用,计划迁移为外部扩展(参见 Apollo 迁移)。Consul 同步可作为外部扩展使用(参见 plugin-store-consul)。网关副本会将更新应用到本地缓存。
可观测性指标和日志插件,包括 Kafka 和 Elasticsearch 目标;Admin 提供电子邮件和钉钉告警。
AI 与 MCPAI 代理、提示词处理、Token 限制、敏感词过滤、AI 请求/响应转换,以及支持 SSE 和 Streamable HTTP 的 MCP 服务插件。

架构

Apache ShenYu 架构

开始使用

请参阅英文文档、中文文档或官方下载页面。

Docker 快速开始

使用 Docker 和 OpenSSL 启动 ShenYu Admin、网关和示例 HTTP 服务。在同一个 Shell 中运行以下命令。

启动服务
docker network create shenyu

export SHENYU_JWT_SECRETKEY="$(openssl rand -hex 32)"
export SHENYU_SYNC_WEBSOCKET_TOKEN="$(openssl rand -hex 32)"
export SHENYU_LOCAL_KEY="$(openssl rand -hex 24)"
export SHENYU_LOCAL_SHA512KEY="$(printf %s "$SHENYU_LOCAL_KEY" | openssl dgst -sha512 -r | awk '{print $1}')"

docker run -d --name shenyu-admin --network shenyu -p 127.0.0.1:9095:9095 \
  -e SHENYU_JWT_SECRETKEY -e SHENYU_SYNC_WEBSOCKET_TOKEN \
  apache/shenyu-admin:latest

docker run -d --name shenyu-demo --network shenyu nginx:stable-alpine

docker run -d --name shenyu-bootstrap --network shenyu -p 127.0.0.1:9195:9195 \
  -e SHENYU_SYNC_WEBSOCKET_URLS=ws://shenyu-admin:9095/websocket \
  -e SHENYU_SYNC_WEBSOCKET_TOKEN \
  -e SHENYU_HEARTBEAT_SERVERLISTS=http://shenyu-admin:9095 \
  -e SHENYU_LOCAL_ENABLED=true -e SHENYU_LOCAL_SHA512KEY \
  apache/shenyu-bootstrap:latest

Admin 监听 http://localhost:9095;网关监听 http://localhost:9195。等待这两项服务启动,然后检查其健康端点:

curl -fsS http://localhost:9095/actuator/health
curl -fsS http://localhost:9195/actuator/health
配置示例路由

以下请求会在此网关上配置 divide 插件,将 /index.html 转发到示例服务:

curl -fsS http://localhost:9195/shenyu/plugin/selectorAndRules \
  -H 'Content-Type: application/json' \
  -H "localKey: ${SHENYU_LOCAL_KEY}" \
  -d '{
    "pluginName": "divide",
    "selectorHandler": "[{\"upstreamUrl\":\"shenyu-demo:80\",\"protocol\":\"http\",\"weight\":100}]",
    "conditionDataList": [
      {"paramType": "uri", "operator": "match", "paramValue": "/index.html"}
    ],
    "ruleDataList": [{
      "ruleHandler": "{\"loadBalance\":\"random\"}",
      "conditionDataList": [
        {"paramType": "uri", "operator": "match", "paramValue": "/index.html"}
      ]
    }]
  }'

此请求只会更新此网关实例;不会将路由写入 Admin。对于由中心管理的持久路由,请在 Admin 中使用持久化数据库进行配置,而不要使用默认的内存 H2 数据库。

SOFA 和 Tars 支持不再随默认网关发行版提供。要运行这些协议,请在网关类路径中安装对应的 plugin-store starter,并继续使用现有的 Admin 元数据、客户端注册 SDK 和示例进行协议配置。

验证路由
curl -i http://localhost:9195/index.html

响应中应包含通过 ShenYu 提供的 NGINX 欢迎页面。

为什么选择 Apache ShenYu?

ShenYu(神禹)是中国古代统治者夏禹的尊称,也称大禹。人们铭记他三过黄河,为民造福,并成功治理水患。与尧、舜并称为中国古代三大圣王。

这个名字体现了三种理念:

  • 弘扬中华文明的传统美德。
  • 呼应网关在流量治理中的核心作用。
  • 表达社区秉持公平、公正、开放和任人唯贤的承诺,以此向神禹致敬,并践行 Apache Way。

社区与支持

已知用户

已知用户页面按注册顺序列出了已注册用户。

欢迎使用 Apache ShenYu 的组织通过 GitHub issue #68 注册。注册仅面向开源用户。

Star 历史

Apache ShenYu 星标历史

许可证

Apache ShenYu 根据 Apache License, Version 2.0 授权。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。