How alibaba/sentinel works
Sentinel is a Java microservice resilience platform: applications mark resources, Sentinel evaluates configured traffic rules, and blocked or permitted traffic produces runtime metrics for operational monitoring. Framework adapters expose the same protection in RPC, HTTP, reactive, and gateway stacks; the gateway also supports API definitions and gateway-specific rules. Cluster services extend flow control through shared token decisions, while the dashboard monitors clients and configures rules. The map combines README-described capabilities with sampled implementation relationships; unsampled subsystems are represented at paths supported by the tree, with links omitted where call evidence is unavailable.
Main entry points: Entry.java Resource entry · ParameterMetricStorage.java Parameter metric storage · DefaultTokenService.java Token service · GatewayRuleManager.java Gateway rule manager
Components 27
Core protection
- Resource entry
sentinel-core/src/main/java/com/alibaba/csp/sentinel/Entry.java - Flow rules
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/FlowRule.java - Rule managers
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/RuleManager.java - Rule constants
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/RuleConstant.java - Resource identity
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slotchain/ResourceWrapper.java - Dynamic properties
sentinel-core/src/main/java/com/alibaba/csp/sentinel/property/DynamicSentinelProperty.java - Property interfaces
sentinel-core/src/main/java/com/alibaba/csp/sentinel/property/SentinelProperty.java - Property listeners
sentinel-core/src/main/java/com/alibaba/csp/sentinel/property/PropertyListener.java - Parameter rules
sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowRule.java - Parameter metrics
sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParameterMetric.java - Parameter metric storage
sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParameterMetricStorage.java - Runtime statistics
sentinel-core/src/main/java/com/alibaba/csp/sentinel/eagleeye/StatLogController.java - Record logging
sentinel-core/src/main/java/com/alibaba/csp/sentinel/log/RecordLog.java
Gateway governance
- Gateway request filter
sentinel-adapter/sentinel-spring-cloud-gateway-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/SentinelGatewayFilter.java - API definitions
sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/api/ApiDefinition.java - Gateway rule manager
sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/rule/GatewayRuleManager.java - Gateway rule conversion
sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/rule/GatewayRuleConverter.java - Gateway rule commands
sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/command/UpdateGatewayRuleCommandHandler.java
Cluster control
- Cluster transport client
sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/NettyTransportClient.java - Token service
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/DefaultTokenService.java - Cluster flow rules
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/rule/ClusterFlowRuleManager.java - Cluster parameter rules
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/rule/ClusterParamFlowRuleManager.java
Framework integrations
- Framework adapters
sentinel-adapter
Operations
- Sentinel dashboard
- Client transport
sentinel-transport/sentinel-transport-common/src/main/java/com/alibaba/csp/sentinel/transport/client/CommandClient.java - Live monitoring
sentinel-core/src/main/java/com/alibaba/csp/sentinel/eagleeye/StatLogController.java
Other components
- Service application
Connections 20
- Service application → Resource entry: marks resource
README.md - Service application → Flow rules: configures rules
README.md - Resource entry → Resource identity: identifies resource
sentinel-core/src/main/java/com/alibaba/csp/sentinel/Entry.java - Flow rules → Rule managers: loaded by
README.md - Dynamic properties → Property listeners: notifies listeners
sentinel-core/src/main/java/com/alibaba/csp/sentinel/property/DynamicSentinelProperty.java - Property interfaces → Dynamic properties: implemented by
sentinel-core/src/main/java/com/alibaba/csp/sentinel/property/DynamicSentinelProperty.java - Gateway request filter → Gateway rule manager: enforces gateway rules
- Gateway rule manager → Gateway rule conversion: converts parameter rules
sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/rule/GatewayRuleManager.java - Gateway rule commands → Gateway rule manager: updates rules
- API definitions → Gateway request filter: matches requests
- Framework adapters → Resource entry: integrates protection
README.md - Cluster transport client → Token service: requests tokens
- Token service → Cluster flow rules: looks up rules
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/DefaultTokenService.java - Token service → Cluster parameter rules: looks up rules
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/DefaultTokenService.java - Sentinel dashboard → Client transport: configures clients
README.md - Sentinel dashboard → Live monitoring: monitors runtime
README.md - Resource entry → Live monitoring: records outcomes
sentinel-core/src/main/java/com/alibaba/csp/sentinel/eagleeye/StatLogController.java - Parameter metric storage → Parameter metrics: stores metrics
sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParameterMetricStorage.java - Parameter metric storage → Parameter rules: initializes from
sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParameterMetricStorage.java - Parameter metric storage → Record logging: logs changes
sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParameterMetricStorage.java