See the Wiki for full documentation, examples, operational details and other information.
See the Javadoc for the API.
See 中文Readme for readme
With the popularity of distributed systems, the stability between services is becoming more important than ever before. Sentinel takes "flow" as breakthrough point, and works on multiple fields including flow control, concurrency, circuit breaking, load protection, to protect service stability
Sentinel has following features:
- Rich applicable scenarios for flow control, concurrency, circuit breaking, load protection
- Integrated monitor, operation module,
- Easy extension point
Example for Maven:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>x.y.z</version>
</dependency>
Sentinel requires Java 6 or later.
Frist wrap code snippet via sentinel api: SphU.entry("RESOURCENAME")
and entry.exit()
.
Entry entry = null;
try {
entry = SphU.entry("HelloWorld");
// BIZ logic being protected
System.out.println("hello world");
} catch (BlockException e) {
// handle block logic
} finally {
// make sure that the exit() logic is called
if (entry != null) {
entry.exit();
}
}
After above steps, you can use sentinel now. By default, we will provide adapter to do this for popular frameworks.
List<FlowRule> rules = new ArrayList<FlowRule>();
FlowRule rule = new FlowRule();
rule.setResource("hello world");
// set limit qps to 20
rule.setCount(20);
rules.add(rule);
FlowRuleManager.loadRules(rules);
And you can see following records in [user dir]\csp\logs\${appName}-metrics.log.xxx
|--timestamp-|------date time----|--resource-|p |block|s |e|rt
1529998904000|2018-06-26 15:41:44|hello world|20|0 |20|0|0
1529998905000|2018-06-26 15:41:45|hello world|20|5579 |20|0|728
1529998906000|2018-06-26 15:41:46|hello world|20|15698|20|0|0
1529998907000|2018-06-26 15:41:47|hello world|20|19262|20|0|0
1529998908000|2018-06-26 15:41:48|hello world|20|19502|20|0|0
1529998909000|2018-06-26 15:41:49|hello world|20|18386|20|0|0
p for incoming reqeust, block for intercepted by rules, success for success handled, e for exception, rt for average response time(ms)
More examples and information can be found in the How To Use section.
How it works can be found in How it works
Samples can be found in the demo module.
Sentinel also has a simple dashboad, which can monitor the cliets, and configure the rules.
- Download Sentinel-Dashboard module
- Run command to package this module:
$ mvn clean package
- Start dashboard
$ java -Dserver.port=8080 \
-Dcsp.sentinel.dashboard.server=localhost:8080 \
-Dproject.name=sentinel-dashboard \
-jar target/sentinel-dashboard.jar
- Include sentinel client in your application by mvn or download this library:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>x.y.z</version>
</dependency>
If you need to download the jars instead of using a build system, create a Maven pom file like this with the desired version:
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.alibaba</groupId>
<artifactId>download-sentine</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Simple POM to download sentinel-core and dependencies</name>
<dependencies>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>x.y.z</version>
<scope/>
</dependency>
</dependencies>
</project>
Then execute:
mvn -f download-sentinel-pom.xml dependency:copy-dependencies
-
Add JVM parameter
-Dcsp.sentinel.dashboard.server=consoleIp:port
when you start your application -
Trigger your resource
After above steps, you can check your application in "Machnes" and resources runtime infomation in your dashboard.
More details please refer to: Dashboard
Sentinel will generate logs for trouble shooting. All the infos can be found in logs
For bugs, questions and discussions please use the GitHub Issues
Contact us: sentinel@linux.alibaba.com
Twitter:@AlibabaSentinel
Weibo: