How apache/shenyu works
Apache ShenYu is a service-proxy gateway with an Admin control plane. A client request enters the gateway, is handled through its extensible plugin chain, and is proxied to an upstream; separately, operators configure routes in Admin, which persists configuration and distributes updates for gateway replicas to apply. The README documents protocol conversion, registration/discovery, security and traffic controls, caching and transformation, observability, and AI/MCP features. Those capabilities are represented at subsystem level; sampled source details are limited, so undocumented internal call edges are omitted.
Main entry points: ShenyuLoaderService.java Plugin chain · PluginController.java Admin API · PluginMapper.java Configuration store · ShenyuControllerEndpoint.java Gateway ingress
Components 21
Gateway runtime
- Gateway ingress
shenyu-web/src/main/java/org/apache/shenyu/web/endpoint/ShenyuControllerEndpoint.java - Plugin chain
shenyu-web/src/main/java/org/apache/shenyu/web/loader/ShenyuLoaderService.java - Gateway config cache
shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/cache/CommonPluginDataSubscriber.java
Admin control plane
- Admin API
shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginController.java - Configuration store
shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/PluginMapper.java - Authorization management
shenyu-admin/src/main/java/org/apache/shenyu/admin/service/AppAuthService.java
Configuration sync
- Admin change dispatch
shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/DataChangedEventDispatcher.java - Sync transports
shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/WebsocketSyncDataService.java - Gateway sync service
shenyu-sync-data-center/shenyu-sync-data-api/src/main/java/org/apache/shenyu/sync/data/core/AbstractNodeDataSyncService.java
Gateway capabilities
- Security controls
shenyu-plugin/shenyu-plugin-security/shenyu-plugin-sign/src/main/java/org/apache/shenyu/plugin/sign/service/SignService.java - Traffic controls
shenyu-loadbalancer/src/main/java/org/apache/shenyu/loadbalancer/cache/UpstreamCacheManager.java - Transform and cache
shenyu-plugin/shenyu-plugin-context-path/src/main/java/org/apache/shenyu/plugin/context/path/handler/ContextPathPluginDataHandler.java - Protocol proxying
shenyu-plugin/shenyu-plugin-proxy/shenyu-plugin-rpc/shenyu-plugin-dubbo/shenyu-plugin-apache-dubbo/src/main/java/org/apache/shenyu/plugin/apache/dubbo/proxy/ApacheDubboProxyService.java - AI and MCP
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-proxy/src/main/java/org/apache/shenyu/plugin/ai/proxy/enhanced/service/AiProxyEngine.java
Registration and operations
- Client registration
shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractContextPathRegisterService.java - Service discovery
shenyu-admin/src/main/java/org/apache/shenyu/admin/discovery/DefaultDiscoveryProcessor.java - Metrics and logging
shenyu-plugin/shenyu-plugin-metrics/src/main/java/org/apache/shenyu/plugin/metrics/prometheus/PrometheusMetricsService.java - Admin alerts
shenyu-alert/src/main/java/org/apache/shenyu/alert/AlertNotifyHandler.java
Other components
- API caller
- Backend services
- Operator
Connections 20
- API caller → Gateway ingress: sends request
README.md - Gateway ingress → Plugin chain: enters plugins
README.md - Plugin chain → Backend services: proxies request
README.md - Operator → Admin API: configures routes
README.md - Admin API → Configuration store: persists config
- Admin API → Authorization management: manages auth
- Client registration → Admin API: registers metadata
- Service discovery → Configuration store: updates upstreams
- Configuration store → Admin change dispatch: drives changes
- Admin change dispatch → Sync transports: publishes updates
- Sync transports → Gateway sync service: delivers updates
README.md - Gateway sync service → Gateway config cache: updates caches
shenyu-sync-data-center/shenyu-sync-data-api/src/main/java/org/apache/shenyu/sync/data/core/AbstractNodeDataSyncService.java - Gateway config cache → Plugin chain: supplies config
shenyu-web/src/main/java/org/apache/shenyu/web/loader/ShenyuLoaderService.java - Plugin chain → Security controls: applies controls
README.md - Plugin chain → Traffic controls: selects upstream
README.md - Plugin chain → Transform and cache: transforms requests
README.md - Plugin chain → Protocol proxying: converts protocols
README.md - Plugin chain → AI and MCP: handles AI traffic
README.md - Plugin chain → Metrics and logging: emits telemetry
README.md - Admin API → Admin alerts: sends alerts
README.md