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
2f8e70e3
Commit
2f8e70e3
authored
Jun 23, 2018
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加新的策略
parent
d91e7166
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
70 additions
and
39 deletions
+70
-39
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/configuration/AdminAutoConfiguration.java
+19
-17
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/endpoint/AdminEndpoint.java
+18
-1
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/configuration/PluginAutoConfiguration.java
+7
-6
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/constant/PluginConstant.java
+2
-1
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/decorator/DiscoveryClientDecorator.java
+5
-5
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/decorator/EurekaServiceRegistryDecorator.java
+7
-3
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/DiscoveryControlStrategy.java
+1
-1
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/RegisterControlStrategy.java
+2
-2
discovery-springcloud-example-a/src/main/resources/application.properties
+9
-3
No files found.
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/configuration/AdminAutoConfiguration.java
View file @
2f8e70e3
...
@@ -9,31 +9,32 @@ package com.nepxion.discovery.plugin.admincenter.configuration;
...
@@ -9,31 +9,32 @@ package com.nepxion.discovery.plugin.admincenter.configuration;
* @version 1.0
* @version 1.0
*/
*/
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.actuate.endpoint.Endpoint
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.cloud.client.serviceregistry.Registration
;
import
org.springframework.cloud.client.serviceregistry.ServiceRegistry
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
com.nepxion.discovery.plugin.admincenter.endpoint.AdminEndpoint
;
import
com.nepxion.discovery.plugin.admincenter.endpoint.AdminEndpoint
;
@Configuration
@Configuration
//
@ConditionalOnProperty(value = "com.bkjk.platform.restclient
.enabled", matchIfMissing = true)
//
@ConditionalOnProperty(value = "spring.application.discovery.admin
.enabled", matchIfMissing = true)
public
class
AdminAutoConfiguration
{
public
class
AdminAutoConfiguration
{
//
@ConditionalOnBean
(
ServiceRegistry
.
class
)
// @ConditionalOnBean(ServiceRegistry.class)
@ConditionalOnClass
(
Endpoint
.
class
)
// @ConditionalOnClass(Endpoint.class)
protected
static
class
AdminEndpointConfiguration
{
// protected static class EurekaMgmtEndpointConfiguration {
@Autowired
(
required
=
false
)
// @Autowired(required = false)
private
Registration
registration
;
// private Registration registration;
//
// @Bean
// public EurekaMgmtEndpoint serviceDiscoveryMgmtEndpoint(ServiceRegistry serviceRegistry) {
// EurekaMgmtEndpoint endpoint = new EurekaMgmtEndpoint(serviceRegistry);
// endpoint.setRegistration(registration);
// return endpoint;
// }
// }
@Bean
@Bean
public
AdminEndpoint
actuatorEndpoint
()
{
public
AdminEndpoint
adminEndpoint
(
ServiceRegistry
<?>
serviceRegistry
)
{
return
new
AdminEndpoint
();
AdminEndpoint
adminEndpoint
=
new
AdminEndpoint
(
serviceRegistry
);
adminEndpoint
.
setRegistration
(
registration
);
return
adminEndpoint
;
}
}
}
}
}
\ No newline at end of file
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/endpoint/AdminEndpoint.java
View file @
2f8e70e3
...
@@ -9,10 +9,14 @@ package com.nepxion.discovery.plugin.admincenter.endpoint;
...
@@ -9,10 +9,14 @@ package com.nepxion.discovery.plugin.admincenter.endpoint;
* @version 1.0
* @version 1.0
*/
*/
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeansException
;
import
org.springframework.beans.BeansException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.actuate.endpoint.Endpoint
;
import
org.springframework.boot.actuate.endpoint.Endpoint
;
import
org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint
;
import
org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint
;
import
org.springframework.cloud.client.serviceregistry.Registration
;
import
org.springframework.cloud.client.serviceregistry.ServiceRegistry
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.ConfigurableApplicationContext
;
...
@@ -26,18 +30,31 @@ import org.springframework.web.bind.annotation.RequestParam;
...
@@ -26,18 +30,31 @@ import org.springframework.web.bind.annotation.RequestParam;
import
com.nepxion.discovery.plugin.framework.cache.PluginCache
;
import
com.nepxion.discovery.plugin.framework.cache.PluginCache
;
@ManagedResource
(
description
=
"
Discovery
endpoint"
)
@ManagedResource
(
description
=
"
Admin
endpoint"
)
public
class
AdminEndpoint
implements
MvcEndpoint
,
ApplicationContextAware
,
EnvironmentAware
{
public
class
AdminEndpoint
implements
MvcEndpoint
,
ApplicationContextAware
,
EnvironmentAware
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
AdminEndpoint
.
class
);
private
ConfigurableApplicationContext
context
;
private
ConfigurableApplicationContext
context
;
private
Environment
environment
;
private
Environment
environment
;
private
ServiceRegistry
<?>
serviceRegistry
;
private
Registration
registration
;
@Autowired
@Autowired
private
PluginCache
pluginCache
;
private
PluginCache
pluginCache
;
public
AdminEndpoint
(
ServiceRegistry
<?>
serviceRegistry
)
{
this
.
serviceRegistry
=
serviceRegistry
;
}
public
void
setRegistration
(
Registration
registration
)
{
this
.
registration
=
registration
;
}
@RequestMapping
(
path
=
"filter"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
path
=
"filter"
,
method
=
RequestMethod
.
GET
)
@ManagedOperation
@ManagedOperation
public
Object
filter
(
@RequestParam
(
"serviceId"
)
String
serviceId
,
@RequestParam
(
"ip"
)
String
ip
)
{
public
Object
filter
(
@RequestParam
(
"serviceId"
)
String
serviceId
,
@RequestParam
(
"ip"
)
String
ip
)
{
pluginCache
.
put
(
serviceId
,
ip
);
pluginCache
.
put
(
serviceId
,
ip
);
return
"success"
;
return
"success"
;
}
}
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/configuration/PluginAutoConfiguration.java
View file @
2f8e70e3
...
@@ -16,8 +16,8 @@ import org.springframework.context.annotation.Configuration;
...
@@ -16,8 +16,8 @@ import org.springframework.context.annotation.Configuration;
import
com.nepxion.discovery.plugin.framework.cache.PluginCache
;
import
com.nepxion.discovery.plugin.framework.cache.PluginCache
;
import
com.nepxion.discovery.plugin.framework.entity.RuleEntity
;
import
com.nepxion.discovery.plugin.framework.entity.RuleEntity
;
import
com.nepxion.discovery.plugin.framework.strategy.DiscoveryStrategy
;
import
com.nepxion.discovery.plugin.framework.strategy.Discovery
Control
Strategy
;
import
com.nepxion.discovery.plugin.framework.strategy.RegisterStrategy
;
import
com.nepxion.discovery.plugin.framework.strategy.Register
Control
Strategy
;
@Configuration
@Configuration
public
class
PluginAutoConfiguration
{
public
class
PluginAutoConfiguration
{
...
@@ -37,12 +37,12 @@ public class PluginAutoConfiguration {
...
@@ -37,12 +37,12 @@ public class PluginAutoConfiguration {
}
}
@Bean
@Bean
public
Register
Strategy
register
Strategy
()
{
public
Register
ControlStrategy
registerControl
Strategy
()
{
return
new
RegisterStrategy
();
return
new
Register
Control
Strategy
();
}
}
@Bean
@Bean
public
Discovery
Strategy
discovery
Strategy
()
{
public
Discovery
ControlStrategy
discoveryControl
Strategy
()
{
return
new
DiscoveryStrategy
();
return
new
Discovery
Control
Strategy
();
}
}
}
}
\ No newline at end of file
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/constant/PluginConstant.java
View file @
2f8e70e3
...
@@ -10,7 +10,8 @@ package com.nepxion.discovery.plugin.framework.constant;
...
@@ -10,7 +10,8 @@ package com.nepxion.discovery.plugin.framework.constant;
*/
*/
public
class
PluginConstant
{
public
class
PluginConstant
{
public
static
final
String
SPRING_APPLICATION_DISCOVERY_VERSION_ENABLED
=
"spring.application.discovery.version.enabled"
;
public
static
final
String
SPRING_APPLICATION_REGISTER_CONTROL_ENABLED
=
"spring.application.register.control.enabled"
;
public
static
final
String
SPRING_APPLICATION_DISCOVERY_CONTROL_ENABLED
=
"spring.application.discovery.control.enabled"
;
public
static
final
String
SPRING_APPLICATION_NAME
=
"spring.application.name"
;
public
static
final
String
SPRING_APPLICATION_NAME
=
"spring.application.name"
;
public
static
final
String
EUREKA_METADATA_VERSION
=
"eureka.instance.metadataMap.version"
;
public
static
final
String
EUREKA_METADATA_VERSION
=
"eureka.instance.metadataMap.version"
;
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/decorator/DiscoveryClientDecorator.java
View file @
2f8e70e3
...
@@ -17,7 +17,7 @@ import org.springframework.context.ConfigurableApplicationContext;
...
@@ -17,7 +17,7 @@ import org.springframework.context.ConfigurableApplicationContext;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
com.nepxion.discovery.plugin.framework.constant.PluginConstant
;
import
com.nepxion.discovery.plugin.framework.constant.PluginConstant
;
import
com.nepxion.discovery.plugin.framework.strategy.DiscoveryStrategy
;
import
com.nepxion.discovery.plugin.framework.strategy.Discovery
Control
Strategy
;
public
class
DiscoveryClientDecorator
implements
DiscoveryClient
{
public
class
DiscoveryClientDecorator
implements
DiscoveryClient
{
private
DiscoveryClient
discoveryClient
;
private
DiscoveryClient
discoveryClient
;
...
@@ -45,13 +45,13 @@ public class DiscoveryClientDecorator implements DiscoveryClient {
...
@@ -45,13 +45,13 @@ public class DiscoveryClientDecorator implements DiscoveryClient {
public
List
<
ServiceInstance
>
getInstances
(
String
serviceId
)
{
public
List
<
ServiceInstance
>
getInstances
(
String
serviceId
)
{
List
<
ServiceInstance
>
instances
=
discoveryClient
.
getInstances
(
serviceId
);
List
<
ServiceInstance
>
instances
=
discoveryClient
.
getInstances
(
serviceId
);
boolean
discoveryVersionEnabled
=
Boolean
.
valueOf
(
environment
.
getProperty
(
PluginConstant
.
SPRING_APPLICATION_DISCOVERY_VERSION_ENABLED
)
);
Boolean
discoveryControlEnabled
=
environment
.
getProperty
(
PluginConstant
.
SPRING_APPLICATION_DISCOVERY_CONTROL_ENABLED
,
Boolean
.
class
);
if
(
discovery
Version
Enabled
)
{
if
(
discovery
Control
Enabled
)
{
String
applicationName
=
environment
.
getProperty
(
PluginConstant
.
SPRING_APPLICATION_NAME
);
String
applicationName
=
environment
.
getProperty
(
PluginConstant
.
SPRING_APPLICATION_NAME
);
String
metadataVersion
=
environment
.
getProperty
(
PluginConstant
.
EUREKA_METADATA_VERSION
);
String
metadataVersion
=
environment
.
getProperty
(
PluginConstant
.
EUREKA_METADATA_VERSION
);
Discovery
Strategy
discoveryStrategy
=
applicationContext
.
getBean
(
Discovery
Strategy
.
class
);
Discovery
ControlStrategy
discoveryControlStrategy
=
applicationContext
.
getBean
(
DiscoveryControl
Strategy
.
class
);
discoveryStrategy
.
apply
(
applicationName
,
metadataVersion
,
serviceId
,
instances
);
discovery
Control
Strategy
.
apply
(
applicationName
,
metadataVersion
,
serviceId
,
instances
);
}
}
return
instances
;
return
instances
;
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/decorator/EurekaServiceRegistryDecorator.java
View file @
2f8e70e3
...
@@ -15,7 +15,8 @@ import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceReg
...
@@ -15,7 +15,8 @@ import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceReg
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
com.nepxion.discovery.plugin.framework.strategy.RegisterStrategy
;
import
com.nepxion.discovery.plugin.framework.constant.PluginConstant
;
import
com.nepxion.discovery.plugin.framework.strategy.RegisterControlStrategy
;
public
class
EurekaServiceRegistryDecorator
extends
EurekaServiceRegistry
{
public
class
EurekaServiceRegistryDecorator
extends
EurekaServiceRegistry
{
private
ServiceRegistry
<
EurekaRegistration
>
serviceRegistry
;
private
ServiceRegistry
<
EurekaRegistration
>
serviceRegistry
;
...
@@ -30,11 +31,14 @@ public class EurekaServiceRegistryDecorator extends EurekaServiceRegistry {
...
@@ -30,11 +31,14 @@ public class EurekaServiceRegistryDecorator extends EurekaServiceRegistry {
@Override
@Override
public
void
register
(
EurekaRegistration
registration
)
{
public
void
register
(
EurekaRegistration
registration
)
{
Boolean
registerControlEnabled
=
environment
.
getProperty
(
PluginConstant
.
SPRING_APPLICATION_REGISTER_CONTROL_ENABLED
,
Boolean
.
class
);
if
(
registerControlEnabled
)
{
String
serviceId
=
registration
.
getServiceId
();
String
serviceId
=
registration
.
getServiceId
();
String
ipAddress
=
registration
.
getInstanceConfig
().
getIpAddress
();
String
ipAddress
=
registration
.
getInstanceConfig
().
getIpAddress
();
RegisterStrategy
registerStrategy
=
applicationContext
.
getBean
(
RegisterStrategy
.
class
);
RegisterControlStrategy
registerControlStrategy
=
applicationContext
.
getBean
(
RegisterControlStrategy
.
class
);
registerStrategy
.
apply
(
serviceId
,
ipAddress
);
registerControlStrategy
.
apply
(
serviceId
,
ipAddress
);
}
serviceRegistry
.
register
(
registration
);
serviceRegistry
.
register
(
registration
);
}
}
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/DiscoveryStrategy.java
→
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/Discovery
Control
Strategy.java
View file @
2f8e70e3
...
@@ -28,7 +28,7 @@ import com.nepxion.discovery.plugin.framework.entity.DiscoveryEntity;
...
@@ -28,7 +28,7 @@ import com.nepxion.discovery.plugin.framework.entity.DiscoveryEntity;
import
com.nepxion.discovery.plugin.framework.entity.DiscoveryServiceEntity
;
import
com.nepxion.discovery.plugin.framework.entity.DiscoveryServiceEntity
;
import
com.nepxion.discovery.plugin.framework.entity.RuleEntity
;
import
com.nepxion.discovery.plugin.framework.entity.RuleEntity
;
public
class
DiscoveryStrategy
{
public
class
Discovery
Control
Strategy
{
@Autowired
@Autowired
private
RuleEntity
pluginEntity
;
private
RuleEntity
pluginEntity
;
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/RegisterStrategy.java
→
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/Register
Control
Strategy.java
View file @
2f8e70e3
...
@@ -23,8 +23,8 @@ import com.nepxion.discovery.plugin.framework.entity.RegisterEntity;
...
@@ -23,8 +23,8 @@ import com.nepxion.discovery.plugin.framework.entity.RegisterEntity;
import
com.nepxion.discovery.plugin.framework.entity.RegisterFilterType
;
import
com.nepxion.discovery.plugin.framework.entity.RegisterFilterType
;
import
com.nepxion.discovery.plugin.framework.exception.PluginException
;
import
com.nepxion.discovery.plugin.framework.exception.PluginException
;
public
class
RegisterStrategy
{
public
class
Register
Control
Strategy
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
RegisterStrategy
.
class
);
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
Register
Control
Strategy
.
class
);
@Autowired
@Autowired
private
RuleEntity
ruleEntity
;
private
RuleEntity
ruleEntity
;
...
...
discovery-springcloud-example-a/src/main/resources/application.properties
View file @
2f8e70e3
...
@@ -5,9 +5,14 @@ eureka.client.serviceUrl.defaultZone=http://10.0.75.1:9528/eureka/
...
@@ -5,9 +5,14 @@ eureka.client.serviceUrl.defaultZone=http://10.0.75.1:9528/eureka/
eureka.instance.preferIpAddress
=
true
eureka.instance.preferIpAddress
=
true
eureka.instance.metadataMap.version
=
1.0
eureka.instance.metadataMap.version
=
1.0
# Gray version control
# Plugin config
spring.application.discovery.version.enabled
=
true
# 开启和关闭服务注册层面的控制。一旦关闭,服务注册的黑/白名单过滤功能将失效
# Get remote or config
spring.application.register.control.enabled
=
true
# 开启和关闭服务发现层面的控制。一旦关闭,服务多版本调用的控制功能将失效,动态屏蔽指定IP地址的服务示例功能将失效
spring.application.discovery.control.enabled
=
true
# 开启和关闭远程配置中心规则配置文件读取。一旦关闭,默认读取本地规则配置文件(例如:rule.xml)
spring.application.discovery.remote.config.enabled
=
true
spring.application.discovery.remote.config.enabled
=
true
management.security.enabled
=
false
management.security.enabled
=
false
\ No newline at end of file
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