init
This commit is contained in:
30
sentinel/sentinel-demo/sentinel-demo-etcd-datasource/pom.xml
Normal file
30
sentinel/sentinel-demo/sentinel-demo-etcd-datasource/pom.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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">
|
||||
<parent>
|
||||
<artifactId>sentinel-demo</artifactId>
|
||||
<groupId>com.alibaba.csp</groupId>
|
||||
<version>1.8.3</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>sentinel-demo-etcd-datasource</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.csp</groupId>
|
||||
<artifactId>sentinel-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.csp</groupId>
|
||||
<artifactId>sentinel-datasource-etcd</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright 1999-2018 Alibaba Group Holding Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.alibaba.csp.sentinel.demo.datasource.etcd;
|
||||
|
||||
|
||||
import io.etcd.jetcd.ByteSequence;
|
||||
import io.etcd.jetcd.Client;
|
||||
|
||||
/**
|
||||
* Etcd config sender for demo.
|
||||
*
|
||||
* @author lianglin
|
||||
* @since 1.7.0
|
||||
*/
|
||||
public class EtcdConfigSender {
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
|
||||
|
||||
String rule_key = "sentinel_demo_rule_key";
|
||||
|
||||
Client client = Client.builder()
|
||||
.endpoints("http://127.0.0.1:2379")
|
||||
.user(ByteSequence.from("root".getBytes()))
|
||||
.password(ByteSequence.from("12345".getBytes()))
|
||||
.build();
|
||||
final String rule = "[\n"
|
||||
+ " {\n"
|
||||
+ " \"resource\": \"TestResource\",\n"
|
||||
+ " \"controlBehavior\": 0,\n"
|
||||
+ " \"count\": 5.0,\n"
|
||||
+ " \"grade\": 1,\n"
|
||||
+ " \"limitApp\": \"default\",\n"
|
||||
+ " \"strategy\": 0\n"
|
||||
+ " }\n"
|
||||
+ "]";
|
||||
client.getKVClient()
|
||||
.put(ByteSequence.from(rule_key.getBytes()), ByteSequence.from(rule.getBytes()));
|
||||
|
||||
System.out.println("setting rule success");
|
||||
Thread.sleep(10000);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright 1999-2018 Alibaba Group Holding Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.alibaba.csp.sentinel.demo.datasource.etcd;
|
||||
|
||||
import com.alibaba.csp.sentinel.config.SentinelConfig;
|
||||
import com.alibaba.csp.sentinel.datasource.ReadableDataSource;
|
||||
import com.alibaba.csp.sentinel.datasource.etcd.EtcdConfig;
|
||||
import com.alibaba.csp.sentinel.datasource.etcd.EtcdDataSource;
|
||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lianglin
|
||||
* @since 1.7.0
|
||||
*/
|
||||
public class EtcdDataSourceDemo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String rule_key = "sentinel_demo_rule_key";
|
||||
String yourUserName = "root";
|
||||
String yourPassWord = "12345";
|
||||
String endPoints = "http://127.0.0.1:2379";
|
||||
SentinelConfig.setConfig(EtcdConfig.END_POINTS, endPoints);
|
||||
SentinelConfig.setConfig(EtcdConfig.USER, yourUserName);
|
||||
SentinelConfig.setConfig(EtcdConfig.PASSWORD, yourPassWord);
|
||||
SentinelConfig.setConfig(EtcdConfig.CHARSET, "utf-8");
|
||||
SentinelConfig.setConfig(EtcdConfig.AUTH_ENABLE, "true");
|
||||
|
||||
ReadableDataSource<String, List<FlowRule>> flowRuleEtcdDataSource = new EtcdDataSource<>(rule_key, (rule) -> JSON.parseArray(rule, FlowRule.class));
|
||||
FlowRuleManager.register2Property(flowRuleEtcdDataSource.getProperty());
|
||||
List<FlowRule> rules = FlowRuleManager.getRules();
|
||||
System.out.println(rules);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user