Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
谢捷峰
discovery
Commits
ac180699
Commit
ac180699
authored
Nov 03, 2018
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
支持Alibaba Sentinel
parent
61bf9355
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
124 additions
and
1 deletions
+124
-1
discovery-springcloud-example-service/pom.xml
+5
-0
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/DiscoveryApplicationA1.java
+14
-0
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/impl/MySentinelExceptionHandler.java
+24
-0
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/impl/MySentinelFlowRuleParser.java
+26
-0
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/rest/ARestImpl.java
+2
-0
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/rest/BRestImpl.java
+2
-0
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/rest/CRestImpl.java
+2
-0
discovery-springcloud-example-service/src/main/resources/application-a1.properties
+4
-0
discovery-springcloud-example-service/src/main/resources/application-a2.properties
+4
-0
discovery-springcloud-example-service/src/main/resources/application-b1.properties
+4
-0
discovery-springcloud-example-service/src/main/resources/application-b2.properties
+4
-0
discovery-springcloud-example-service/src/main/resources/application-c1.properties
+4
-0
discovery-springcloud-example-service/src/main/resources/application-c2.properties
+4
-0
discovery-springcloud-example-service/src/main/resources/application-c3.properties
+4
-0
discovery-springcloud-example-service/src/main/resources/bootstrap.properties
+9
-0
discovery-springcloud-example-service/src/main/resources/sentinel-rule.json
+11
-0
pom.xml
+1
-1
No files found.
discovery-springcloud-example-service/pom.xml
View file @
ac180699
...
...
@@ -83,6 +83,11 @@
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-sentinel
</artifactId>
</dependency>
<dependency>
<groupId>
de.codecentric
</groupId>
<artifactId>
spring-boot-admin-starter-client
</artifactId>
</dependency>
...
...
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/DiscoveryApplicationA1.java
View file @
ac180699
...
...
@@ -13,16 +13,21 @@ import java.util.Collections;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.builder.SpringApplicationBuilder
;
import
org.springframework.cloud.alibaba.sentinel.annotation.SentinelProtect
;
import
org.springframework.cloud.alibaba.sentinel.datasource.annotation.SentinelDataSource
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.client.loadbalancer.LoadBalanced
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.web.client.RestTemplate
;
import
com.alibaba.csp.sentinel.datasource.ReadableDataSource
;
import
com.nepxion.discovery.plugin.example.service.impl.MyDiscoveryEnabledStrategy
;
import
com.nepxion.discovery.plugin.example.service.impl.MyDiscoveryListener
;
import
com.nepxion.discovery.plugin.example.service.impl.MyLoadBalanceListener
;
import
com.nepxion.discovery.plugin.example.service.impl.MyRegisterListener
;
import
com.nepxion.discovery.plugin.example.service.impl.MySentinelExceptionHandler
;
import
com.nepxion.discovery.plugin.example.service.impl.MySentinelFlowRuleParser
;
import
com.nepxion.discovery.plugin.example.service.impl.MySubscriber
;
import
com.nepxion.discovery.plugin.strategy.service.aop.RestTemplateStrategyInterceptor
;
...
...
@@ -36,8 +41,12 @@ public class DiscoveryApplicationA1 {
new
SpringApplicationBuilder
(
DiscoveryApplicationA1
.
class
).
run
(
args
);
}
@SentinelDataSource
(
"spring.cloud.sentinel.datasource"
)
protected
ReadableDataSource
dataSource
;
@Bean
@LoadBalanced
@SentinelProtect
(
blockHandler
=
"handleException"
,
blockHandlerClass
=
MySentinelExceptionHandler
.
class
)
public
RestTemplate
restTemplate
(
RestTemplateStrategyInterceptor
restTemplateStrategyInterceptor
)
{
RestTemplate
restTemplate
=
new
RestTemplate
();
restTemplate
.
setInterceptors
(
Collections
.
singletonList
(
restTemplateStrategyInterceptor
));
...
...
@@ -46,6 +55,11 @@ public class DiscoveryApplicationA1 {
}
@Bean
public
MySentinelFlowRuleParser
mySentinelFlowRuleParser
()
{
return
new
MySentinelFlowRuleParser
();
}
@Bean
public
MyRegisterListener
myRegisterListener
()
{
return
new
MyRegisterListener
();
}
...
...
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/impl/MySentinelExceptionHandler.java
0 → 100644
View file @
ac180699
package
com
.
nepxion
.
discovery
.
plugin
.
example
.
service
.
impl
;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.csp.sentinel.slots.block.BlockException
;
public
class
MySentinelExceptionHandler
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
MySentinelExceptionHandler
.
class
);
public
static
void
handleException
(
BlockException
e
)
{
LOG
.
error
(
"Sentinel exception causes"
,
e
);
}
}
\ No newline at end of file
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/impl/MySentinelFlowRuleParser.java
0 → 100644
View file @
ac180699
package
com
.
nepxion
.
discovery
.
plugin
.
example
.
service
.
impl
;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import
java.util.List
;
import
com.alibaba.csp.sentinel.datasource.Converter
;
import
com.alibaba.csp.sentinel.slots.block.flow.FlowRule
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
public
class
MySentinelFlowRuleParser
implements
Converter
<
String
,
List
<
FlowRule
>>
{
@Override
public
List
<
FlowRule
>
convert
(
String
source
)
{
return
JSON
.
parseObject
(
source
,
new
TypeReference
<
List
<
FlowRule
>>()
{
});
}
}
\ No newline at end of file
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/rest/ARestImpl.java
View file @
ac180699
...
...
@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.client.RestTemplate
;
import
com.alibaba.csp.sentinel.annotation.SentinelResource
;
import
com.nepxion.discovery.common.constant.DiscoveryConstant
;
@RestController
...
...
@@ -30,6 +31,7 @@ public class ARestImpl extends AbstractRestImpl {
private
RestTemplate
restTemplate
;
@RequestMapping
(
path
=
"/rest"
,
method
=
RequestMethod
.
POST
)
@SentinelResource
(
"sentinel-resource"
)
public
String
rest
(
@RequestBody
String
value
)
{
value
=
doRest
(
value
);
value
=
restTemplate
.
postForEntity
(
"http://discovery-springcloud-example-b/rest"
,
value
,
String
.
class
).
getBody
();
...
...
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/rest/BRestImpl.java
View file @
ac180699
...
...
@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.client.RestTemplate
;
import
com.alibaba.csp.sentinel.annotation.SentinelResource
;
import
com.nepxion.discovery.common.constant.DiscoveryConstant
;
@RestController
...
...
@@ -30,6 +31,7 @@ public class BRestImpl extends AbstractRestImpl {
private
RestTemplate
restTemplate
;
@RequestMapping
(
path
=
"/rest"
,
method
=
RequestMethod
.
POST
)
@SentinelResource
(
"sentinel-resource"
)
public
String
rest
(
@RequestBody
String
value
)
{
value
=
doRest
(
value
);
value
=
restTemplate
.
postForEntity
(
"http://discovery-springcloud-example-c/rest"
,
value
,
String
.
class
).
getBody
();
...
...
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/rest/CRestImpl.java
View file @
ac180699
...
...
@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.alibaba.csp.sentinel.annotation.SentinelResource
;
import
com.nepxion.discovery.common.constant.DiscoveryConstant
;
@RestController
...
...
@@ -25,6 +26,7 @@ public class CRestImpl extends AbstractRestImpl {
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
CRestImpl
.
class
);
@RequestMapping
(
path
=
"/rest"
,
method
=
RequestMethod
.
POST
)
@SentinelResource
(
"sentinel-resource"
)
public
String
rest
(
@RequestBody
String
value
)
{
value
=
doRest
(
value
);
...
...
discovery-springcloud-example-service/src/main/resources/application-a1.properties
View file @
ac180699
...
...
@@ -20,5 +20,8 @@ spring.cloud.nacos.discovery.metadata.version=1.0
spring.cloud.nacos.discovery.metadata.group
=
example-service-group
spring.cloud.nacos.discovery.metadata.region
=
dev
# Sentinel config
spring.cloud.sentinel.transport.port
=
4100
# Admin config
management.server.port
=
5100
\ No newline at end of file
discovery-springcloud-example-service/src/main/resources/application-a2.properties
View file @
ac180699
...
...
@@ -20,5 +20,8 @@ spring.cloud.nacos.discovery.metadata.version=1.1
spring.cloud.nacos.discovery.metadata.group
=
example-service-group
spring.cloud.nacos.discovery.metadata.region
=
qa
# Sentinel config
spring.cloud.sentinel.transport.port
=
4101
# Admin config
management.server.port
=
5101
\ No newline at end of file
discovery-springcloud-example-service/src/main/resources/application-b1.properties
View file @
ac180699
...
...
@@ -20,5 +20,8 @@ spring.cloud.nacos.discovery.metadata.version=1.0
spring.cloud.nacos.discovery.metadata.group
=
example-service-group
spring.cloud.nacos.discovery.metadata.region
=
dev
# Sentinel config
spring.cloud.sentinel.transport.port
=
4200
# Admin config
management.server.port
=
5200
\ No newline at end of file
discovery-springcloud-example-service/src/main/resources/application-b2.properties
View file @
ac180699
...
...
@@ -20,5 +20,8 @@ spring.cloud.nacos.discovery.metadata.version=1.1
spring.cloud.nacos.discovery.metadata.group
=
example-service-group
spring.cloud.nacos.discovery.metadata.region
=
qa
# Sentinel config
spring.cloud.sentinel.transport.port
=
4201
# Admin config
management.server.port
=
5201
\ No newline at end of file
discovery-springcloud-example-service/src/main/resources/application-c1.properties
View file @
ac180699
...
...
@@ -20,5 +20,8 @@ spring.cloud.nacos.discovery.metadata.version=1.0
spring.cloud.nacos.discovery.metadata.group
=
example-service-group
spring.cloud.nacos.discovery.metadata.region
=
dev
# Sentinel config
spring.cloud.sentinel.transport.port
=
4300
# Admin config
management.server.port
=
5300
\ No newline at end of file
discovery-springcloud-example-service/src/main/resources/application-c2.properties
View file @
ac180699
...
...
@@ -20,5 +20,8 @@ spring.cloud.nacos.discovery.metadata.version=1.1
spring.cloud.nacos.discovery.metadata.group
=
example-service-group
spring.cloud.nacos.discovery.metadata.region
=
qa
# Sentinel config
spring.cloud.sentinel.transport.port
=
4301
# Admin config
management.server.port
=
5301
\ No newline at end of file
discovery-springcloud-example-service/src/main/resources/application-c3.properties
View file @
ac180699
...
...
@@ -20,5 +20,8 @@ spring.cloud.nacos.discovery.metadata.version=1.2
spring.cloud.nacos.discovery.metadata.group
=
example-service-group
spring.cloud.nacos.discovery.metadata.region
=
qa
# Sentinel config
spring.cloud.sentinel.transport.port
=
4302
# Admin config
management.server.port
=
5302
\ No newline at end of file
discovery-springcloud-example-service/src/main/resources/bootstrap.properties
View file @
ac180699
...
...
@@ -43,6 +43,15 @@ spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle
=
8
spring.redis.pool.min-idle
=
0
# Sentinel config
spring.cloud.sentinel.transport.dashboard
=
localhost:8075
spring.cloud.sentinel.datasource.type
=
file
spring.cloud.sentinel.datasource.recommendRefreshMs
=
3000
spring.cloud.sentinel.datasource.bufSize
=
4056196
spring.cloud.sentinel.datasource.charset
=
utf-8
spring.cloud.sentinel.datasource.converter
=
mySentinelFlowRuleParser
spring.cloud.sentinel.datasource.file
=
E://sentinel-rule.json
# Admin config
# 该项只对Consul有效,而且必须配置在bootstrap.properties里,配置在application.properties无效
# management.health.consul.enabled=true
...
...
discovery-springcloud-example-service/src/main/resources/sentinel-rule.json
0 → 100644
View file @
ac180699
[
{
"resource"
:
"sentinel-resource"
,
"controlBehavior"
:
0
,
"count"
:
5.0
,
"grade"
:
1
,
"limitApp"
:
"default"
,
"strategy"
:
0
}
]
\ No newline at end of file
pom.xml
View file @
ac180699
...
...
@@ -60,7 +60,7 @@
<caffeine.version>
2.6.2
</caffeine.version>
<swagger.version>
2.7.0
</swagger.version>
<spring.cloud.version>
Finchley.SR2
</spring.cloud.version>
<spring.cloud.alibaba.version>
0.2.
0.RELEASE
</spring.cloud.alibaba.version>
<spring.cloud.alibaba.version>
0.2.
1.BUILD-SNAPSHOT
</spring.cloud.alibaba.version>
<spring.boot.version>
2.0.3.RELEASE
</spring.boot.version>
<disruptor.version>
3.3.7
</disruptor.version>
<java.version>
1.8
</java.version>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment