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
291f9075
Commit
291f9075
authored
Jun 27, 2018
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改介绍
parent
25ad6ac8
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
21 deletions
+22
-21
README.md
+22
-21
No files found.
README.md
View file @
291f9075
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
[

](http://www.javadoc.io/doc/com.nepxion/discovery-plugin)
[

](http://www.javadoc.io/doc/com.nepxion/discovery-plugin)
[

](https://travis-ci.org/Nepxion/Discovery)
[

](https://travis-ci.org/Nepxion/Discovery)
Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件,目前暂时只支持Eureka。现在Spring Cloud服务可以方便引入该插件,不需要对业务代码做任何修改,只需要修改
配置
即可
Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件,目前暂时只支持Eureka。现在Spring Cloud服务可以方便引入该插件,不需要对业务代码做任何修改,只需要修改
规则(XML)
即可
## 简介
## 简介
支持如下功能
支持如下功能
...
@@ -12,17 +12,18 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
...
@@ -12,17 +12,18 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
1. 实现服务注册层面的控制,基于黑/白名单的IP地址过滤机制禁止对相应的微服务进行注册
1. 实现服务注册层面的控制,基于黑/白名单的IP地址过滤机制禁止对相应的微服务进行注册
2. 实现服务发现层面的控制,基于黑/白名单的IP地址过滤机制禁止对相应的微服务被发现;通过对消费端和提供端可访问版本对应关系的配置,进行多版本灰度访问控制
2. 实现服务发现层面的控制,基于黑/白名单的IP地址过滤机制禁止对相应的微服务被发现;通过对消费端和提供端可访问版本对应关系的配置,进行多版本灰度访问控制
3. 实现通过下面两种推送方式,动态改变“服务发现层面的控制”
3. 实现通过下面两种推送方式,动态改变“服务发现层面的控制”
4. 实现通过事件总线机制(EventBus)异步对接远程配置中心,接受远程配置中心主动推送配置信息
4. 实现通过XML进行规则定义
5. 实现通过事件总线机制(EventBus)异步接受Rest主动推送配置信息
5. 实现通过事件总线机制(EventBus)异步对接远程配置中心,接受远程配置中心主动推送规则信息
6. 实现通过Listener机制便于使用者扩展更多过滤条件,也可以利用Listener实现服务注册发现核心事件的监听
6. 实现通过事件总线机制(EventBus)异步接受Rest主动推送规则信息
7. 实现通过Listener机制便于使用者扩展更多过滤条件,也可以利用Listener实现服务注册发现核心事件的监听
## 场景
## 场景
1. 黑/白名单的IP地址注册的过滤
1. 黑/白名单的IP地址注册的过滤
开发环境的本地服务(例如IP地址为172.16.0.8)不希望被注册到测试环境的服务注册发现中心,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤)
开发环境的本地服务(例如IP地址为172.16.0.8)不希望被注册到测试环境的服务注册发现中心,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤)
的规则
我们可以通过提供一份黑/白名单达到该效果
我们可以通过提供一份黑/白名单达到该效果
2. 黑/白名单的IP地址发现的过滤
2. 黑/白名单的IP地址发现的过滤
开发环境的本地服务(例如IP地址为172.16.0.8)已经注册到测试环境的服务注册发现中心,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤),该本地服务不会被其他测试环境的服务所调用
开发环境的本地服务(例如IP地址为172.16.0.8)已经注册到测试环境的服务注册发现中心,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤)
的规则
,该本地服务不会被其他测试环境的服务所调用
我们可以通过推送一份黑/白名单达到该效果
我们可以通过推送一份黑/白名单达到该效果
3. 多版本灰度访问控制
3. 多版本灰度访问控制
A服务调用B服务,而B服务有两个实例(B1、B2和B3),虽然三者相同的服务名,但功能上有差异,需求是在某个时刻,A服务只能调用B1,禁止调用B2和B3。在此场景下,我们在application.properties里为B1维护一个版本为1.0,为B2维护一个版本为1.1,以此类推
A服务调用B服务,而B服务有两个实例(B1、B2和B3),虽然三者相同的服务名,但功能上有差异,需求是在某个时刻,A服务只能调用B1,禁止调用B2和B3。在此场景下,我们在application.properties里为B1维护一个版本为1.0,为B2维护一个版本为1.1,以此类推
...
@@ -77,9 +78,9 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
...
@@ -77,9 +78,9 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
</rule>
</rule>
```
```
### 多版本灰度
配置
策略
### 多版本灰度
规则
策略
```
xml
```
xml
配置
策略介绍
规则
策略介绍
1. 标准配置,举例如下
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版本
<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版本
2. 版本值不配置,举例如下
2. 版本值不配置,举例如下
...
@@ -99,24 +100,24 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
...
@@ -99,24 +100,24 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
## 跟远程配置中心整合
## 跟远程配置中心整合
使用者可以跟携程Apollo,百度DisConf等远程配置中心整合
使用者可以跟携程Apollo,百度DisConf等远程配置中心整合
```
xml
```
xml
1. 主动从本地或远程配置中心获取
配置
1. 主动从本地或远程配置中心获取
规则
2. 订阅远程配置中心的
配置
更新
2. 订阅远程配置中心的
规则
更新
```
```
继承ConfigAdapter.java
继承ConfigAdapter.java
```
java
```
java
public
class
DiscoveryConfigAdapter
extends
ConfigAdapter
{
public
class
DiscoveryConfigAdapter
extends
ConfigAdapter
{
// 通过application.properties里的spring.application.discovery.remote.config.enabled=true,来决定主动从本地,还是远程配置中心获取
配置
// 通过application.properties里的spring.application.discovery.remote.config.enabled=true,来决定主动从本地,还是远程配置中心获取
规则
// 从本地获取
配置
// 从本地获取
规则
@Override
@Override
protected
String
getLocalContextPath
()
{
protected
String
getLocalContextPath
()
{
//
配置
文件放在resources目录下
//
规则
文件放在resources目录下
return
"classpath:rule.xml"
;
return
"classpath:rule.xml"
;
//
配置
文件放在工程根目录下
//
规则
文件放在工程根目录下
// return "file:rule.xml";
// return "file:rule.xml";
}
}
// 从远程配置中心获取
配置
// 从远程配置中心获取
规则
@Override
@Override
public
InputStream
getRemoteInputStream
()
{
public
InputStream
getRemoteInputStream
()
{
InputStream
inputStream
=
...;
InputStream
inputStream
=
...;
...
@@ -124,7 +125,7 @@ public class DiscoveryConfigAdapter extends ConfigAdapter {
...
@@ -124,7 +125,7 @@ public class DiscoveryConfigAdapter extends ConfigAdapter {
return
inputStream
;
return
inputStream
;
}
}
// 订阅远程配置中心的
配置
更新
// 订阅远程配置中心的
规则
更新
@PostConstruct
@PostConstruct
public
void
publish
()
{
public
void
publish
()
{
InputStream
inputStream
=
...;
InputStream
inputStream
=
...;
...
@@ -134,7 +135,7 @@ public class DiscoveryConfigAdapter extends ConfigAdapter {
...
@@ -134,7 +135,7 @@ public class DiscoveryConfigAdapter extends ConfigAdapter {
}
}
```
```
实现接收远程配置中心推送过来的
配置
更新
实现接收远程配置中心推送过来的
规则
更新
```
java
```
java
public
class
DiscoveryConfigSubscriber
{
public
class
DiscoveryConfigSubscriber
{
@Autowired
@Autowired
...
@@ -148,13 +149,13 @@ public class DiscoveryConfigSubscriber {
...
@@ -148,13 +149,13 @@ public class DiscoveryConfigSubscriber {
```
```
## 不整合远程配置中心
## 不整合远程配置中心
使用者可以通过Rest方式主动向一个微服务推送
配置
信息,但该方式只能每次推送到一个微服务上
使用者可以通过Rest方式主动向一个微服务推送
规则
信息,但该方式只能每次推送到一个微服务上
```
xml
```
xml
利用Post执行http://IP:PORT/admin/config,发送的内容即规则XML
利用Post执行http://IP:PORT/admin/config,发送的内容即规则XML
```
```
## 查看
配置
## 查看
当前生效的规则
使用者可以通过Rest方式主动
向一个微服务推送配置信息,但该方式只能每次推送到一个微服务上
使用者可以通过Rest方式主动
请求某个微服务当前生效的规则
```
xml
```
xml
利用Get执行http://IP:PORT/admin/view
利用Get执行http://IP:PORT/admin/view
```
```
...
@@ -192,7 +193,7 @@ eureka.instance.metadataMap.version=1.0
...
@@ -192,7 +193,7 @@ eureka.instance.metadataMap.version=1.0
spring.application.register.control.enabled=true
spring.application.register.control.enabled=true
# 开启和关闭服务发现层面的控制。一旦关闭,服务多版本调用的控制功能将失效,动态屏蔽指定IP地址的服务实例被发现的功能将失效。缺失则默认为true
# 开启和关闭服务发现层面的控制。一旦关闭,服务多版本调用的控制功能将失效,动态屏蔽指定IP地址的服务实例被发现的功能将失效。缺失则默认为true
spring.application.discovery.control.enabled=true
spring.application.discovery.control.enabled=true
# 开启和关闭远程配置中心规则
配置文件读取。一旦关闭,默认读取本地规则配置
文件(例如:rule.xml)。缺失则默认为true
# 开启和关闭远程配置中心规则
规则文件读取。一旦关闭,默认读取本地规则规则
文件(例如:rule.xml)。缺失则默认为true
spring.application.discovery.remote.config.enabled=true
spring.application.discovery.remote.config.enabled=true
management.security.enabled=false
management.security.enabled=false
...
...
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