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
8dbfbc6b
Commit
8dbfbc6b
authored
Jun 24, 2018
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
重构规则定义,并升级到2.0版本
parent
629609db
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
353 additions
and
181 deletions
+353
-181
discovery-plugin-config-center/src/main/java/com/nepxion/discovery/plugin/configcenter/ConfigParser.java
+60
-12
discovery-plugin-config-center/src/main/java/com/nepxion/discovery/plugin/configcenter/constant/ConfigConstant.java
+4
-2
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/DiscoveryEntity.java
+8
-32
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/DiscoveryServiceEntity.java
+1
-1
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/FilterEntity.java
+72
-0
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/FilterHolderEntity.java
+51
-0
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/FilterType.java
+6
-6
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/RegisterEntity.java
+1
-55
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/VersionEntity.java
+54
-0
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/DiscoveryControlStrategy.java
+7
-1
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/RegisterControlStrategy.java
+11
-4
discovery-springcloud-example-a/src/main/resources/rule1.xml
+29
-14
discovery-springcloud-example-a/src/main/resources/rule2.xml
+12
-13
discovery-springcloud-example-a/src/main/resources/rule3.xml
+12
-13
discovery-springcloud-example-a/src/main/resources/rule4.xml
+13
-15
discovery-springcloud-example-a/src/main/resources/rule5.xml
+12
-13
No files found.
discovery-plugin-config-center/src/main/java/com/nepxion/discovery/plugin/configcenter/ConfigParser.java
View file @
8dbfbc6b
...
...
@@ -28,9 +28,12 @@ import com.nepxion.discovery.plugin.configcenter.xml.Dom4JParser;
import
com.nepxion.discovery.plugin.framework.constant.PluginConstant
;
import
com.nepxion.discovery.plugin.framework.entity.DiscoveryEntity
;
import
com.nepxion.discovery.plugin.framework.entity.DiscoveryServiceEntity
;
import
com.nepxion.discovery.plugin.framework.entity.FilterEntity
;
import
com.nepxion.discovery.plugin.framework.entity.FilterHolderEntity
;
import
com.nepxion.discovery.plugin.framework.entity.FilterType
;
import
com.nepxion.discovery.plugin.framework.entity.RegisterEntity
;
import
com.nepxion.discovery.plugin.framework.entity.RegisterFilterType
;
import
com.nepxion.discovery.plugin.framework.entity.RuleEntity
;
import
com.nepxion.discovery.plugin.framework.entity.VersionEntity
;
import
com.nepxion.discovery.plugin.framework.exception.PluginException
;
public
class
ConfigParser
extends
Dom4JParser
{
...
...
@@ -83,27 +86,61 @@ public class ConfigParser extends Dom4JParser {
reentrantReadWriteLock
.
writeLock
().
unlock
();
}
LOG
.
info
(
"Rule entity
is
{}"
,
ruleEntity
);
LOG
.
info
(
"Rule entity
=\n
{}"
,
ruleEntity
);
}
@SuppressWarnings
(
"rawtypes"
)
private
void
parseRegister
(
Element
element
,
RegisterEntity
registerEntity
)
{
Attribute
filterTypeAttribute
=
element
.
attribute
(
ConfigConstant
.
FILTER_TYPE_ATTRIBUTE_NAME
);
if
(
filterTypeAttribute
==
null
)
{
throw
new
PluginException
(
"Attribute["
+
ConfigConstant
.
FILTER_TYPE_ATTRIBUTE_NAME
+
"] in element["
+
element
.
getName
()
+
"] is missing"
);
for
(
Iterator
elementIterator
=
element
.
elementIterator
();
elementIterator
.
hasNext
();)
{
Object
childElementObject
=
elementIterator
.
next
();
if
(
childElementObject
instanceof
Element
)
{
Element
childElement
=
(
Element
)
childElementObject
;
if
(
StringUtils
.
equals
(
childElement
.
getName
(),
ConfigConstant
.
BLACKLIST_ELEMENT_NAME
))
{
parseFilter
(
childElement
,
ConfigConstant
.
BLACKLIST_ELEMENT_NAME
,
registerEntity
);
}
else
if
(
StringUtils
.
equals
(
childElement
.
getName
(),
ConfigConstant
.
WHITELIST_ELEMENT_NAME
))
{
parseFilter
(
childElement
,
ConfigConstant
.
WHITELIST_ELEMENT_NAME
,
registerEntity
);
}
}
}
String
filterType
=
filterTypeAttribute
.
getData
().
toString
().
trim
();
registerEntity
.
setFilterType
(
RegisterFilterType
.
fromString
(
filterType
));
}
@SuppressWarnings
(
"rawtypes"
)
private
void
parseDiscovery
(
Element
element
,
DiscoveryEntity
discoveryEntity
)
{
for
(
Iterator
elementIterator
=
element
.
elementIterator
();
elementIterator
.
hasNext
();)
{
Object
childElementObject
=
elementIterator
.
next
();
if
(
childElementObject
instanceof
Element
)
{
Element
childElement
=
(
Element
)
childElementObject
;
if
(
StringUtils
.
equals
(
childElement
.
getName
(),
ConfigConstant
.
BLACKLIST_ELEMENT_NAME
))
{
parseFilter
(
childElement
,
ConfigConstant
.
BLACKLIST_ELEMENT_NAME
,
discoveryEntity
);
}
else
if
(
StringUtils
.
equals
(
childElement
.
getName
(),
ConfigConstant
.
WHITELIST_ELEMENT_NAME
))
{
parseFilter
(
childElement
,
ConfigConstant
.
WHITELIST_ELEMENT_NAME
,
discoveryEntity
);
}
else
if
(
StringUtils
.
equals
(
childElement
.
getName
(),
ConfigConstant
.
VERSION_ELEMENT_NAME
))
{
parseVersion
(
childElement
,
discoveryEntity
);
}
}
}
}
@SuppressWarnings
(
"rawtypes"
)
private
void
parseFilter
(
Element
element
,
String
filterTypeValue
,
FilterHolderEntity
filterHolderEntity
)
{
FilterEntity
filterEntity
=
filterHolderEntity
.
getFilterEntity
();
if
(
filterEntity
!=
null
)
{
throw
new
PluginException
(
"Filter["
+
filterEntity
.
getFilterType
()
+
"] has been configed, only one filter element exists"
);
}
filterEntity
=
new
FilterEntity
();
filterEntity
.
setFilterType
(
FilterType
.
fromString
(
filterTypeValue
));
Attribute
globalFilterAttribute
=
element
.
attribute
(
ConfigConstant
.
FILTER_VALUE_ATTRIBUTE_NAME
);
if
(
globalFilterAttribute
!=
null
)
{
String
globalFilterValue
=
globalFilterAttribute
.
getData
().
toString
().
trim
();
List
<
String
>
globalFilterValueList
=
parseList
(
globalFilterValue
);
regis
terEntity
.
setFilterValueList
(
globalFilterValueList
);
fil
terEntity
.
setFilterValueList
(
globalFilterValueList
);
}
Map
<
String
,
List
<
String
>>
filterMap
=
registerEntity
.
getFilterMap
();
Map
<
String
,
List
<
String
>>
filterMap
=
filterEntity
.
getFilterMap
();
for
(
Iterator
elementIterator
=
element
.
elementIterator
();
elementIterator
.
hasNext
();)
{
Object
childElementObject
=
elementIterator
.
next
();
if
(
childElementObject
instanceof
Element
)
{
...
...
@@ -124,11 +161,20 @@ public class ConfigParser extends Dom4JParser {
filterMap
.
put
(
serviceName
,
filterValueList
);
}
}
filterHolderEntity
.
setFilterEntity
(
filterEntity
);
}
@SuppressWarnings
(
"rawtypes"
)
private
void
parseDiscovery
(
Element
element
,
DiscoveryEntity
discoveryEntity
)
{
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
serviceEntityMap
=
discoveryEntity
.
getServiceEntityMap
();
private
void
parseVersion
(
Element
element
,
DiscoveryEntity
discoveryEntity
)
{
VersionEntity
versionEntity
=
discoveryEntity
.
getVersionEntity
();
if
(
versionEntity
!=
null
)
{
throw
new
PluginException
(
"Version has been configed, only one version element exists"
);
}
versionEntity
=
new
VersionEntity
();
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
serviceEntityMap
=
versionEntity
.
getServiceEntityMap
();
for
(
Iterator
elementIterator
=
element
.
elementIterator
();
elementIterator
.
hasNext
();)
{
Object
childElementObject
=
elementIterator
.
next
();
if
(
childElementObject
instanceof
Element
)
{
...
...
@@ -173,6 +219,8 @@ public class ConfigParser extends Dom4JParser {
serviceEntityList
.
add
(
serviceEntity
);
}
}
discoveryEntity
.
setVersionEntity
(
versionEntity
);
}
private
List
<
String
>
parseList
(
String
value
)
{
...
...
discovery-plugin-config-center/src/main/java/com/nepxion/discovery/plugin/configcenter/constant/ConfigConstant.java
View file @
8dbfbc6b
...
...
@@ -14,11 +14,13 @@ public class ConfigConstant {
public
static
final
String
RULE_ELEMENT_NAME
=
"rule"
;
public
static
final
String
REGISTER_ELEMENT_NAME
=
"register"
;
public
static
final
String
DISCOVERY_ELEMENT_NAME
=
"discovery"
;
public
static
final
String
SERVICE_ELEMENT_NAME
=
"service"
;
public
static
final
String
FILTER_TYPE_ATTRIBUTE_NAME
=
"filter-type"
;
public
static
final
String
BLACKLIST_ELEMENT_NAME
=
"blacklist"
;
public
static
final
String
WHITELIST_ELEMENT_NAME
=
"whitelist"
;
public
static
final
String
VERSION_ELEMENT_NAME
=
"version"
;
public
static
final
String
FILTER_VALUE_ATTRIBUTE_NAME
=
"filter-value"
;
public
static
final
String
SERVICE_NAME_ATTRIBUTE_NAME
=
"service-name"
;
public
static
final
String
DISCOVERY_ELEMENT_NAME
=
"discovery"
;
public
static
final
String
CONSUMER_SERVICE_NAME_ATTRIBUTE_NAME
=
"consumer-service-name"
;
public
static
final
String
PROVIDER_SERVICE_NAME_ATTRIBUTE_NAME
=
"provider-service-name"
;
public
static
final
String
CONSUMER_VERSION_VALUE_ATTRIBUTE_NAME
=
"consumer-version-value"
;
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/DiscoveryEntity.java
View file @
8dbfbc6b
...
...
@@ -9,45 +9,20 @@ package com.nepxion.discovery.plugin.framework.entity;
* @version 1.0
*/
import
java.io.Serializable
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
DiscoveryEntity
extends
FilterHolderEntity
{
private
static
final
long
serialVersionUID
=
-
7417362859952278987L
;
import
org.apache.commons.lang3.builder.EqualsBuilder
;
import
org.apache.commons.lang3.builder.HashCodeBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
public
class
DiscoveryEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6281838121286637807L
;
private
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
serviceEntityMap
=
new
LinkedHashMap
<
String
,
List
<
DiscoveryServiceEntity
>>();
private
VersionEntity
versionEntity
;
public
DiscoveryEntity
()
{
}
public
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
getServiceEntityMap
()
{
return
serviceEntityMap
;
}
public
void
setServiceEntityMap
(
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
serviceEntityMap
)
{
this
.
serviceEntityMap
=
serviceEntityMap
;
}
@Override
public
int
hashCode
()
{
return
HashCodeBuilder
.
reflectionHashCode
(
this
);
}
@Override
public
boolean
equals
(
Object
object
)
{
return
EqualsBuilder
.
reflectionEquals
(
this
,
object
);
public
VersionEntity
getVersionEntity
()
{
return
versionEntity
;
}
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
);
public
void
setVersionEntity
(
VersionEntity
versionEntity
)
{
this
.
versionEntity
=
versionEntity
;
}
}
\ No newline at end of file
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/DiscoveryServiceEntity.java
View file @
8dbfbc6b
...
...
@@ -18,7 +18,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
import
org.apache.commons.lang3.builder.ToStringStyle
;
public
class
DiscoveryServiceEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
297656525817214879
2L
;
private
static
final
long
serialVersionUID
=
907441458379662754
2L
;
private
String
consumerServiceName
;
private
String
providerServiceName
;
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/FilterEntity.java
0 → 100644
View file @
8dbfbc6b
package
com
.
nepxion
.
discovery
.
plugin
.
framework
.
entity
;
/**
* <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.io.Serializable
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.commons.lang3.builder.EqualsBuilder
;
import
org.apache.commons.lang3.builder.HashCodeBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
public
class
FilterEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
3830016495318834467L
;
private
FilterType
filterType
;
private
List
<
String
>
filterValueList
;
private
Map
<
String
,
List
<
String
>>
filterMap
=
new
LinkedHashMap
<
String
,
List
<
String
>>();
public
FilterEntity
()
{
}
public
FilterType
getFilterType
()
{
return
filterType
;
}
public
void
setFilterType
(
FilterType
filterType
)
{
this
.
filterType
=
filterType
;
}
public
List
<
String
>
getFilterValueList
()
{
return
filterValueList
;
}
public
void
setFilterValueList
(
List
<
String
>
filterValueList
)
{
this
.
filterValueList
=
filterValueList
;
}
public
Map
<
String
,
List
<
String
>>
getFilterMap
()
{
return
filterMap
;
}
public
void
setFilterMap
(
Map
<
String
,
List
<
String
>>
filterMap
)
{
this
.
filterMap
=
filterMap
;
}
@Override
public
int
hashCode
()
{
return
HashCodeBuilder
.
reflectionHashCode
(
this
);
}
@Override
public
boolean
equals
(
Object
object
)
{
return
EqualsBuilder
.
reflectionEquals
(
this
,
object
);
}
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
);
}
}
\ No newline at end of file
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/FilterHolderEntity.java
0 → 100644
View file @
8dbfbc6b
package
com
.
nepxion
.
discovery
.
plugin
.
framework
.
entity
;
/**
* <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.io.Serializable
;
import
org.apache.commons.lang3.builder.EqualsBuilder
;
import
org.apache.commons.lang3.builder.HashCodeBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
public
class
FilterHolderEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
8767022123685151416L
;
private
FilterEntity
filterEntity
;
public
FilterHolderEntity
()
{
}
public
FilterEntity
getFilterEntity
()
{
return
filterEntity
;
}
public
void
setFilterEntity
(
FilterEntity
filterEntity
)
{
this
.
filterEntity
=
filterEntity
;
}
@Override
public
int
hashCode
()
{
return
HashCodeBuilder
.
reflectionHashCode
(
this
);
}
@Override
public
boolean
equals
(
Object
object
)
{
return
EqualsBuilder
.
reflectionEquals
(
this
,
object
);
}
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
);
}
}
\ No newline at end of file
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/
Register
FilterType.java
→
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/FilterType.java
View file @
8dbfbc6b
...
...
@@ -9,14 +9,14 @@ package com.nepxion.discovery.plugin.framework.entity;
* @version 1.0
*/
public
enum
Register
FilterType
{
BLACKLIST
(
"
BLACKLIST
"
,
"黑名单"
),
WHITELIST
(
"
WHITELIST
"
,
"白名单"
);
public
enum
FilterType
{
BLACKLIST
(
"
blacklist
"
,
"黑名单"
),
WHITELIST
(
"
whitelist
"
,
"白名单"
);
private
String
value
;
private
String
description
;
private
Register
FilterType
(
String
value
,
String
description
)
{
private
FilterType
(
String
value
,
String
description
)
{
this
.
value
=
value
;
this
.
description
=
description
;
}
...
...
@@ -29,8 +29,8 @@ public enum RegisterFilterType {
return
description
;
}
public
static
Register
FilterType
fromString
(
String
value
)
{
for
(
RegisterFilterType
type
:
Register
FilterType
.
values
())
{
public
static
FilterType
fromString
(
String
value
)
{
for
(
FilterType
type
:
FilterType
.
values
())
{
if
(
type
.
getValue
().
equalsIgnoreCase
(
value
))
{
return
type
;
}
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/RegisterEntity.java
View file @
8dbfbc6b
...
...
@@ -9,63 +9,10 @@ package com.nepxion.discovery.plugin.framework.entity;
* @version 1.0
*/
import
java.io.Serializable
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.commons.lang3.builder.EqualsBuilder
;
import
org.apache.commons.lang3.builder.HashCodeBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
public
class
RegisterEntity
implements
Serializable
{
public
class
RegisterEntity
extends
FilterHolderEntity
{
private
static
final
long
serialVersionUID
=
-
2097322826969006191L
;
private
RegisterFilterType
filterType
;
private
List
<
String
>
filterValueList
;
private
Map
<
String
,
List
<
String
>>
filterMap
=
new
LinkedHashMap
<
String
,
List
<
String
>>();
public
RegisterEntity
()
{
}
public
RegisterFilterType
getFilterType
()
{
return
filterType
;
}
public
void
setFilterType
(
RegisterFilterType
filterType
)
{
this
.
filterType
=
filterType
;
}
public
List
<
String
>
getFilterValueList
()
{
return
filterValueList
;
}
public
void
setFilterValueList
(
List
<
String
>
filterValueList
)
{
this
.
filterValueList
=
filterValueList
;
}
public
Map
<
String
,
List
<
String
>>
getFilterMap
()
{
return
filterMap
;
}
public
void
setFilterMap
(
Map
<
String
,
List
<
String
>>
filterMap
)
{
this
.
filterMap
=
filterMap
;
}
@Override
public
int
hashCode
()
{
return
HashCodeBuilder
.
reflectionHashCode
(
this
);
}
@Override
public
boolean
equals
(
Object
object
)
{
return
EqualsBuilder
.
reflectionEquals
(
this
,
object
);
}
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
);
}
}
\ No newline at end of file
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/entity/VersionEntity.java
0 → 100644
View file @
8dbfbc6b
package
com
.
nepxion
.
discovery
.
plugin
.
framework
.
entity
;
/**
* <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.io.Serializable
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.commons.lang3.builder.EqualsBuilder
;
import
org.apache.commons.lang3.builder.HashCodeBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
public
class
VersionEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
6147106004826964165L
;
private
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
serviceEntityMap
=
new
LinkedHashMap
<
String
,
List
<
DiscoveryServiceEntity
>>();
public
VersionEntity
()
{
}
public
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
getServiceEntityMap
()
{
return
serviceEntityMap
;
}
public
void
setServiceEntityMap
(
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
serviceEntityMap
)
{
this
.
serviceEntityMap
=
serviceEntityMap
;
}
@Override
public
int
hashCode
()
{
return
HashCodeBuilder
.
reflectionHashCode
(
this
);
}
@Override
public
boolean
equals
(
Object
object
)
{
return
EqualsBuilder
.
reflectionEquals
(
this
,
object
);
}
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
);
}
}
\ No newline at end of file
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/DiscoveryControlStrategy.java
View file @
8dbfbc6b
...
...
@@ -26,6 +26,7 @@ import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
import
com.nepxion.discovery.plugin.framework.entity.DiscoveryEntity
;
import
com.nepxion.discovery.plugin.framework.entity.DiscoveryServiceEntity
;
import
com.nepxion.discovery.plugin.framework.entity.RuleEntity
;
import
com.nepxion.discovery.plugin.framework.entity.VersionEntity
;
public
class
DiscoveryControlStrategy
{
@Autowired
...
...
@@ -86,7 +87,12 @@ public class DiscoveryControlStrategy {
return
;
}
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
serviceEntityMap
=
discoveryEntity
.
getServiceEntityMap
();
VersionEntity
versionEntity
=
discoveryEntity
.
getVersionEntity
();
if
(
versionEntity
==
null
)
{
return
;
}
Map
<
String
,
List
<
DiscoveryServiceEntity
>>
serviceEntityMap
=
versionEntity
.
getServiceEntityMap
();
if
(
MapUtils
.
isEmpty
(
serviceEntityMap
))
{
return
;
}
...
...
discovery-plugin-framework/src/main/java/com/nepxion/discovery/plugin/framework/strategy/RegisterControlStrategy.java
View file @
8dbfbc6b
...
...
@@ -19,8 +19,9 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
com.nepxion.discovery.plugin.framework.entity.FilterEntity
;
import
com.nepxion.discovery.plugin.framework.entity.FilterType
;
import
com.nepxion.discovery.plugin.framework.entity.RegisterEntity
;
import
com.nepxion.discovery.plugin.framework.entity.RegisterFilterType
;
import
com.nepxion.discovery.plugin.framework.entity.RuleEntity
;
import
com.nepxion.discovery.plugin.framework.exception.PluginException
;
...
...
@@ -49,9 +50,15 @@ public class RegisterControlStrategy {
return
;
}
RegisterFilterType
filterType
=
registerEntity
.
getFilterType
();
List
<
String
>
globalFilterValueList
=
registerEntity
.
getFilterValueList
();
Map
<
String
,
List
<
String
>>
filterMap
=
registerEntity
.
getFilterMap
();
FilterEntity
filterEntity
=
registerEntity
.
getFilterEntity
();
if
(
filterEntity
==
null
)
{
return
;
}
FilterType
filterType
=
filterEntity
.
getFilterType
();
List
<
String
>
globalFilterValueList
=
filterEntity
.
getFilterValueList
();
Map
<
String
,
List
<
String
>>
filterMap
=
filterEntity
.
getFilterMap
();
List
<
String
>
filterValueList
=
filterMap
.
get
(
serviceId
);
List
<
String
>
allFilterValueList
=
new
ArrayList
<
String
>();
...
...
discovery-springcloud-example-a/src/main/resources/rule1.xml
View file @
8dbfbc6b
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<!-- 服务注册的黑/白名单过滤。白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。每个服务只能同时开启要么白名单,要么黑名单 -->
<!-- filter-type,可选值BLACKLIST/WHITELIST,表示白名单或者黑名单 -->
<!-- service-name,表示服务名 -->
<!-- filter-value,表示黑/白名单的IP地址列表。IP地址一般用前缀来表示,如果多个用“,”分隔,不允许出现空格 -->
<!-- 表示下面所有服务,不允许10.10和11.11为前缀的IP地址注册(全局过滤) -->
<register
filter-type=
"BLACKLIST"
filter-value=
"10.10,11.11"
>
<!-- 表示下面服务,不允许172.16和10.10和11.11为前缀的IP地址注册 -->
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
<register>
<!-- 服务注册的黑/白名单注册过滤,只在服务启动的时候生效。白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。每个服务只能同时开启要么白名单,要么黑名单 -->
<!-- filter-type,可选值BLACKLIST/WHITELIST,表示白名单或者黑名单 -->
<!-- service-name,表示服务名 -->
<!-- filter-value,表示黑/白名单的IP地址列表。IP地址一般用前缀来表示,如果多个用“,”分隔,不允许出现空格 -->
<!-- 表示下面所有服务,不允许10.10和11.11为前缀的IP地址注册(全局过滤) -->
<blacklist
filter-value=
"10.10,11.11"
>
<!-- 表示下面服务,不允许172.16和10.10和11.11为前缀的IP地址注册 -->
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
<!-- <whitelist filter-value="">
<service service-name="" filter-value=""/>
</whitelist> -->
</register>
<!-- 服务发现下,服务多版本调用的控制 -->
<!-- service-name,表示服务名 -->
<!-- version-value,表示可供访问的版本,如果多个用“,”分隔,不允许出现空格 -->
<discovery>
<!-- 服务发现的黑/白名单发现过滤,使用方式跟“服务注册的黑/白名单过滤”一致 -->
<!-- 表示下面所有服务,不允许10.10和11.11为前缀的IP地址被发现(全局过滤) -->
<blacklist
filter-value=
"10.10,11.11"
>
<!-- 表示下面服务,不允许172.16和10.10和11.11为前缀的IP地址被发现 -->
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
<!-- 服务发现的多版本灰度访问控制 -->
<!-- service-name,表示服务名 -->
<!-- version-value,表示可供访问的版本,如果多个用“,”分隔,不允许出现空格 -->
<!-- 配置策略介绍 -->
<!-- 1. 标准配置,举例如下 -->
<!-- <service consumer-service-name="a" provider-service-name="b" consumer-version-value="1.0" provider-version-value="1.0,1.1"/> 表示消费端1.0版本,允许访问提供端1.0和1.1版本 -->
...
...
@@ -29,8 +42,9 @@
<!-- 特殊情况处理,在使用上需要极力避免该情况发生 -->
<!-- 1. 消费端的application.properties未定义版本号(即eureka.instance.metadataMap.version不存在),则该消费端可以访问提供端任何版本 -->
<!-- 2. 提供端的application.properties未定义版本号(即eureka.instance.metadataMap.version不存在),当消费端在xml里不做任何版本配置,才可以访问该提供端 -->
<!-- 表示消费端服务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"
/>
<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"
/>
</version>
</discovery>
</rule>
\ No newline at end of file
discovery-springcloud-example-a/src/main/resources/rule2.xml
View file @
8dbfbc6b
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<!-- 服务注册的黑/白名单过滤。白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。每个服务只能同时开启要么白名单,要么黑名单 -->
<!-- filter-type,可选值BLACKLIST/WHITELIST,表示白名单或者黑名单 -->
<!-- service-name,表示服务名 -->
<!-- filter-value,表示黑/白名单的IP地址列表。IP地址一般用前缀来表示,如果多个用“,”分隔,不允许出现空格 -->
<!-- 表示下面所有服务,不允许10.10和11.11为前缀的IP地址注册(全局过滤) -->
<register
filter-type=
"BLACKLIST"
filter-value=
"10.10,11.11"
>
<!-- 表示下面服务,不允许172.16和10.10和11.11为前缀的IP地址注册 -->
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
<register>
<blacklist
filter-value=
"10.10,11.11"
>
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
</register>
<!-- 服务发现下,服务多版本调用的控制 -->
<!-- service-name,表示服务名 -->
<!-- version-value,表示可供访问的版本,如果多个用“,”分隔,不允许出现空格 -->
<discovery>
<!-- 表示消费端服务a的1.0,允许访问提供端服务b的3.0版本 -->
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
"1.0"
provider-version-value=
"3.0"
/>
<blacklist
filter-value=
"10.10,11.11"
>
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
<version>
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
"1.0"
provider-version-value=
"3.0"
/>
</version>
</discovery>
</rule>
\ No newline at end of file
discovery-springcloud-example-a/src/main/resources/rule3.xml
View file @
8dbfbc6b
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<!-- 服务注册的黑/白名单过滤。白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。每个服务只能同时开启要么白名单,要么黑名单 -->
<!-- filter-type,可选值BLACKLIST/WHITELIST,表示白名单或者黑名单 -->
<!-- service-name,表示服务名 -->
<!-- filter-value,表示黑/白名单的IP地址列表。IP地址一般用前缀来表示,如果多个用“,”分隔,不允许出现空格 -->
<!-- 表示下面所有服务,不允许10.10和11.11为前缀的IP地址注册(全局过滤) -->
<register
filter-type=
"BLACKLIST"
filter-value=
"10.10,11.11"
>
<!-- 表示下面服务,不允许172.16和10.10和11.11为前缀的IP地址注册 -->
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
<register>
<blacklist
filter-value=
"10.10,11.11"
>
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
</register>
<!-- 服务发现下,服务多版本调用的控制 -->
<!-- service-name,表示服务名 -->
<!-- version-value,表示可供访问的版本,如果多个用“,”分隔,不允许出现空格 -->
<discovery>
<!-- 表示消费端服务a的1.0和1.1版本,允许访问提供端服务b的1.0和1.1和2.0版本 -->
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
"1.0,1.1"
provider-version-value=
"1.0,1.1,2.0"
/>
<blacklist
filter-value=
"10.10,11.11"
>
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
<version>
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
"1.0,1.1"
provider-version-value=
"1.0,1.1,2.0"
/>
</version>
</discovery>
</rule>
\ No newline at end of file
discovery-springcloud-example-a/src/main/resources/rule4.xml
View file @
8dbfbc6b
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<!-- 服务注册的黑/白名单过滤。白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。每个服务只能同时开启要么白名单,要么黑名单 -->
<!-- filter-type,可选值BLACKLIST/WHITELIST,表示白名单或者黑名单 -->
<!-- service-name,表示服务名 -->
<!-- filter-value,表示黑/白名单的IP地址列表。IP地址一般用前缀来表示,如果多个用“,”分隔,不允许出现空格 -->
<!-- 表示下面所有服务,不允许10.10和11.11为前缀的IP地址注册(全局过滤) -->
<register
filter-type=
"BLACKLIST"
filter-value=
"10.10,11.11"
>
<!-- 表示下面服务,不允许172.16和10.10和11.11为前缀的IP地址注册 -->
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
<register>
<blacklist
filter-value=
"10.10,11.11"
>
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
</register>
<!-- 服务发现下,服务多版本调用的控制 -->
<!-- service-name,表示服务名 -->
<!-- version-value,表示可供访问的版本,如果多个用“,”分隔,不允许出现空格 -->
<discovery>
<!-- 表示消费端服务a的1.0版本,允许访问提供端服务b的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.1"
/>
<!-- 表示消费端服务a的1.1版本,允许访问提供端服务b的1.0版本-->
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
"1.1"
provider-version-value=
"1.0"
/>
<blacklist
filter-value=
"10.10,11.11"
>
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
<version>
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
"1.0"
provider-version-value=
"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.0"
/>
</version>
</discovery>
</rule>
\ No newline at end of file
discovery-springcloud-example-a/src/main/resources/rule5.xml
View file @
8dbfbc6b
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<!-- 服务注册的黑/白名单过滤。白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。每个服务只能同时开启要么白名单,要么黑名单 -->
<!-- filter-type,可选值BLACKLIST/WHITELIST,表示白名单或者黑名单 -->
<!-- service-name,表示服务名 -->
<!-- filter-value,表示黑/白名单的IP地址列表。IP地址一般用前缀来表示,如果多个用“,”分隔,不允许出现空格 -->
<!-- 表示下面所有服务,不允许10.10和11.11为前缀的IP地址注册(全局过滤) -->
<register
filter-type=
"BLACKLIST"
filter-value=
"10.10,11.11"
>
<!-- 表示下面服务,不允许172.16和10.10和11.11为前缀的IP地址注册 -->
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
<register>
<blacklist
filter-value=
"10.10,11.11"
>
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
</register>
<!-- 服务发现下,服务多版本调用的控制 -->
<!-- service-name,表示服务名 -->
<!-- version-value,表示可供访问的版本,如果多个用“,”分隔,不允许出现空格 -->
<discovery>
<!-- 表示消费端服务a的任何版本,允许访问提供端服务b的任何版本 -->
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
""
provider-version-value=
""
/>
<blacklist
filter-value=
"10.10,11.11"
>
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"172.16"
/>
</blacklist>
<version>
<service
consumer-service-name=
"discovery-springcloud-example-a"
provider-service-name=
"discovery-springcloud-example-b"
consumer-version-value=
""
provider-version-value=
""
/>
</version>
</discovery>
</rule>
\ 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