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
4fa83117
Commit
4fa83117
authored
Jul 01, 2018
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加动态版本设置
parent
47801347
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
162 additions
and
9 deletions
+162
-9
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/configuration/AdminAutoConfiguration.java
+7
-0
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/endpoint/VersionEndpoint.java
+86
-0
discovery-plugin-framework-consul/src/main/java/com/nepxion/discovery/plugin/framework/adapter/ConsulAdapter.java
+3
-2
discovery-plugin-framework-eureka/src/main/java/com/nepxion/discovery/plugin/framework/adapter/EurekaAdapter.java
+3
-2
discovery-plugin-framework-zookeeper/src/main/java/com/nepxion/discovery/plugin/framework/adapter/ZookeeperAdapter.java
+3
-2
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/adapter/AbstractPluginAdapter.java
+42
-0
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/adapter/PluginAdapter.java
+7
-0
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/cache/PluginCache.java
+1
-1
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/configuration/PluginAutoConfiguration.java
+6
-0
discovery-springcloud-example/src/main/resources/rule.xml
+4
-2
No files found.
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/configuration/AdminAutoConfiguration.java
View file @
4fa83117
...
...
@@ -15,6 +15,7 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
com.nepxion.discovery.plugin.admincenter.endpoint.ConfigEndpoint
;
import
com.nepxion.discovery.plugin.admincenter.endpoint.VersionEndpoint
;
@Configuration
public
class
AdminAutoConfiguration
{
...
...
@@ -24,5 +25,10 @@ public class AdminAutoConfiguration {
public
ConfigEndpoint
configEndpoint
()
{
return
new
ConfigEndpoint
();
}
@Bean
public
VersionEndpoint
versionEndpoint
()
{
return
new
VersionEndpoint
();
}
}
}
\ No newline at end of file
discovery-plugin-admin-center/src/main/java/com/nepxion/discovery/plugin/admincenter/endpoint/VersionEndpoint.java
0 → 100644
View file @
4fa83117
package
com
.
nepxion
.
discovery
.
plugin
.
admincenter
.
endpoint
;
/**
* <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.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.actuate.endpoint.Endpoint
;
import
org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.jmx.export.annotation.ManagedOperation
;
import
org.springframework.jmx.export.annotation.ManagedResource
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
com.nepxion.discovery.plugin.framework.adapter.PluginAdapter
;
import
com.nepxion.discovery.plugin.framework.context.PluginContextAware
;
@ManagedResource
(
description
=
"Version Endpoint"
)
public
class
VersionEndpoint
implements
MvcEndpoint
{
@Autowired
private
PluginContextAware
pluginContextAware
;
@Autowired
private
PluginAdapter
pluginAdapter
;
// 发送当前服务的动态版本
@RequestMapping
(
path
=
"send"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
@ManagedOperation
public
ResponseEntity
<?>
send
(
@RequestBody
String
version
)
{
Boolean
discoveryControlEnabled
=
pluginContextAware
.
isDiscoveryControlEnabled
();
if
(!
discoveryControlEnabled
)
{
return
new
ResponseEntity
<>(
Collections
.
singletonMap
(
"Message"
,
"Discovery control is disabled"
),
HttpStatus
.
NOT_FOUND
);
}
pluginAdapter
.
setDynamicVersion
(
version
);
return
ResponseEntity
.
ok
().
body
(
"OK"
);
}
// 查看当前服务的动态版本和动态版本
@RequestMapping
(
path
=
"view"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ManagedOperation
public
ResponseEntity
<
List
<
String
>>
view
()
{
List
<
String
>
versionList
=
new
ArrayList
<
String
>(
2
);
String
localVersion
=
pluginAdapter
.
getLocalVersion
();
String
dynamicVersion
=
pluginAdapter
.
getDynamicVersion
();
versionList
.
add
(
StringUtils
.
isNotEmpty
(
localVersion
)
?
localVersion
:
StringUtils
.
EMPTY
);
versionList
.
add
(
StringUtils
.
isNotEmpty
(
dynamicVersion
)
?
dynamicVersion
:
StringUtils
.
EMPTY
);
return
ResponseEntity
.
ok
().
body
(
versionList
);
}
@Override
public
String
getPath
()
{
return
"/version"
;
}
@Override
public
boolean
isSensitive
()
{
return
true
;
}
@Override
public
Class
<?
extends
Endpoint
<?>>
getEndpointType
()
{
return
null
;
}
}
\ No newline at end of file
discovery-plugin-framework-consul/src/main/java/com/nepxion/discovery/plugin/framework/adapter/ConsulAdapter.java
View file @
4fa83117
...
...
@@ -22,7 +22,7 @@ import com.nepxion.discovery.plugin.framework.constant.ConsulConstant;
import
com.nepxion.discovery.plugin.framework.constant.PluginConstant
;
import
com.nepxion.discovery.plugin.framework.exception.PluginException
;
public
class
ConsulAdapter
implements
PluginAdapter
{
public
class
ConsulAdapter
extends
Abstract
PluginAdapter
{
@Autowired
private
ConfigurableEnvironment
environment
;
...
...
@@ -76,7 +76,7 @@ public class ConsulAdapter implements PluginAdapter {
}
@Override
public
String
getVersion
()
{
public
String
get
Local
Version
()
{
return
version
;
}
}
\ No newline at end of file
discovery-plugin-framework-eureka/src/main/java/com/nepxion/discovery/plugin/framework/adapter/EurekaAdapter.java
View file @
4fa83117
...
...
@@ -17,7 +17,7 @@ import org.springframework.core.env.ConfigurableEnvironment;
import
com.nepxion.discovery.plugin.framework.constant.EurekaConstant
;
import
com.nepxion.discovery.plugin.framework.exception.PluginException
;
public
class
EurekaAdapter
implements
PluginAdapter
{
public
class
EurekaAdapter
extends
Abstract
PluginAdapter
{
@Autowired
private
ConfigurableEnvironment
environment
;
...
...
@@ -44,7 +44,7 @@ public class EurekaAdapter implements PluginAdapter {
}
@Override
public
String
getVersion
()
{
public
String
get
Local
Version
()
{
return
environment
.
getProperty
(
EurekaConstant
.
METADATA_VERSION
);
}
}
\ No newline at end of file
discovery-plugin-framework-zookeeper/src/main/java/com/nepxion/discovery/plugin/framework/adapter/ZookeeperAdapter.java
View file @
4fa83117
...
...
@@ -17,7 +17,7 @@ import org.springframework.core.env.ConfigurableEnvironment;
import
com.nepxion.discovery.plugin.framework.constant.ZookeeperConstant
;
import
com.nepxion.discovery.plugin.framework.exception.PluginException
;
public
class
ZookeeperAdapter
implements
PluginAdapter
{
public
class
ZookeeperAdapter
extends
Abstract
PluginAdapter
{
@Autowired
private
ConfigurableEnvironment
environment
;
...
...
@@ -44,7 +44,7 @@ public class ZookeeperAdapter implements PluginAdapter {
}
@Override
public
String
getVersion
()
{
public
String
get
Local
Version
()
{
return
environment
.
getProperty
(
ZookeeperConstant
.
METADATA_VERSION
);
}
}
\ No newline at end of file
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/adapter/AbstractPluginAdapter.java
0 → 100644
View file @
4fa83117
package
com
.
nepxion
.
discovery
.
plugin
.
framework
.
adapter
;
/**
* <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.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
com.nepxion.discovery.plugin.framework.cache.PluginCache
;
import
com.nepxion.discovery.plugin.framework.constant.PluginConstant
;
public
abstract
class
AbstractPluginAdapter
implements
PluginAdapter
{
@Autowired
private
PluginCache
pluginCache
;
@Override
public
String
getVersion
()
{
String
dynamicVersion
=
getDynamicVersion
();
if
(
StringUtils
.
isNotEmpty
(
dynamicVersion
))
{
return
dynamicVersion
;
}
return
getLocalVersion
();
}
@Override
public
String
getDynamicVersion
()
{
return
pluginCache
.
get
(
PluginConstant
.
VERSION
);
}
@Override
public
void
setDynamicVersion
(
String
version
)
{
pluginCache
.
put
(
PluginConstant
.
VERSION
,
version
);
}
}
\ No newline at end of file
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/adapter/PluginAdapter.java
View file @
4fa83117
...
...
@@ -17,4 +17,10 @@ public interface PluginAdapter {
int
getPort
(
Registration
registration
);
String
getVersion
();
String
getLocalVersion
();
String
getDynamicVersion
();
void
setDynamicVersion
(
String
version
);
}
\ No newline at end of file
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/cache/PluginCache.java
View file @
4fa83117
...
...
@@ -24,7 +24,7 @@ public class PluginCache {
public
PluginCache
()
{
loadingCache
=
CacheBuilder
.
newBuilder
()
.
concurrencyLevel
(
8
)
.
expireAfterWrite
(
1
,
TimeUnit
.
DAYS
)
.
expireAfterWrite
(
365
*
100
,
TimeUnit
.
DAYS
)
.
initialCapacity
(
10
)
.
maximumSize
(
100
)
.
recordStats
()
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/configuration/PluginAutoConfiguration.java
View file @
4fa83117
...
...
@@ -14,6 +14,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
com.nepxion.discovery.plugin.framework.cache.PluginCache
;
import
com.nepxion.discovery.plugin.framework.context.PluginContainerInitializedHandler
;
import
com.nepxion.discovery.plugin.framework.context.PluginContextAware
;
import
com.nepxion.discovery.plugin.framework.entity.RuleEntity
;
...
...
@@ -57,6 +58,11 @@ public class PluginAutoConfiguration {
}
@Bean
public
PluginCache
pluginCache
()
{
return
new
PluginCache
();
}
@Bean
public
RuleEntity
ruleEntity
()
{
return
new
RuleEntity
();
}
...
...
discovery-springcloud-example/src/main/resources/rule.xml
View file @
4fa83117
...
...
@@ -53,8 +53,10 @@
<!-- 1. 消费端的application.properties未定义版本号,则该消费端可以访问提供端任何版本 -->
<!-- 2. 提供端的application.properties未定义版本号,当消费端在xml里不做任何版本配置,才可以访问该提供端 -->
<version>
<!-- 表示消费端服务a的1.0,允许访问提供端服务b的1.0和1.1版本 -->
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
"1.0"
provider-version-value=
"1.0;1.1"
/>
<!-- 表示消费端服务a的1.0,允许访问提供端服务b的1.0版本 -->
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
"1.0"
provider-version-value=
"1.0"
/>
<!-- 表示消费端服务a的1.1,允许访问提供端服务b的1.1版本 -->
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
"1.1"
provider-version-value=
"1.1"
/>
<!-- 表示消费端服务b的1.0,允许访问提供端服务c的1.0和1.1版本 -->
<service
consumer-service-name=
"discovery-springcloud-example-b"
provider-service-name=
"discovery-springcloud-example-c"
consumer-version-value=
"1.0"
provider-version-value=
"1.0;1.1"
/>
<!-- 表示消费端服务b的1.1,允许访问提供端服务c的1.2版本 -->
...
...
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