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
63dd0991
Commit
63dd0991
authored
Jun 23, 2018
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改介绍
parent
ffe741ca
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
16 deletions
+15
-16
README.md
+14
-13
discovery-springcloud-example-a/src/main/resources/application.properties
+1
-3
No files found.
README.md
View file @
63dd0991
...
@@ -9,22 +9,20 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
...
@@ -9,22 +9,20 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
## 简介
## 简介
支持如下功能
支持如下功能
1. 实现
采用黑/白名单的IP地址过滤机制实现对客户端的禁止
注册
1. 实现
服务注册层面的控制,基于黑/白名单的IP地址过滤机制实现禁止对相应的微服务在服务注册发现中心
注册
2. 实现
通过多版本配置实现灰度访问控制
2. 实现
服务发现层面的控制,通过对消费端和提供端可访问版本对应关系的配置,实现多版本灰度访问控制;实现动态屏蔽指定IP地址的服务实例被发现
3. 实现通过远程配置中心
控制黑/白名单和灰度版本,实现动态通知
3. 实现通过远程配置中心
的订阅功能,动态改变上述两种方式控制
4. 实现通过事件总线机制异步对接远程配置中心,提供使用者实现和扩展
4. 实现通过事件总线机制异步对接远程配置中心,提供使用者实现和扩展
5. 实现支持本地配置和远程配置的选择
6. 实现根据服务实例的IP地址,屏蔽服务实例被发现
## 场景
## 场景
1. 黑/白名单的IP地址过滤
1. 黑/白名单的IP地址
注册的
过滤
开发环境的本地服务(例如IP地址为172.16.0.8)不小心注册到测试环境的服务注册发现中心,会导致调用出现问题,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤)
开发环境的本地服务(例如IP地址为172.16.0.8)不小心注册到测试环境的服务注册发现中心,会导致调用出现问题,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤)
我们可以在远程配置中心配置对该服务名所对应的IP地址列表,包含前缀172.16,当是黑名单的时候,表示包含在IP地址列表里的所有服务都禁止注册到服务注册发现中心;当是白名单的时候,表示包含在IP地址列表里的所有服务都允许注册到服务注册发现中心
我们可以在远程配置中心配置对该服务名所对应的IP地址列表,包含前缀172.16,当是黑名单的时候,表示包含在IP地址列表里的所有服务都禁止注册到服务注册发现中心;当是白名单的时候,表示包含在IP地址列表里的所有服务都允许注册到服务注册发现中心
2. 多版本
配置实现
灰度访问控制
2. 多版本灰度访问控制
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,以此类推
我们可以在远程配置中心配置对于A服务调用某个版本的B服务,达到某种意义上的灰度控制,切换版本的时候,我们只需要改相关的远程配置中心的配置即可
我们可以在远程配置中心配置对于A服务调用某个版本的B服务,达到某种意义上的灰度控制,切换版本的时候,我们只需要改相关的远程配置中心的配置即可
3. 屏蔽服务实例被发现
3. 屏蔽
指定IP地址的
服务实例被发现
[待完成]
[待完成]
## 依赖
## 依赖
...
@@ -142,10 +140,8 @@ eureka.instance.metadataMap.version=1.0
...
@@ -142,10 +140,8 @@ eureka.instance.metadataMap.version=1.0
# Plugin config
# Plugin config
# 开启和关闭服务注册层面的控制。一旦关闭,服务注册的黑/白名单过滤功能将失效。缺失则默认为true
# 开启和关闭服务注册层面的控制。一旦关闭,服务注册的黑/白名单过滤功能将失效。缺失则默认为true
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
...
@@ -158,14 +154,14 @@ management.security.enabled=false
...
@@ -158,14 +154,14 @@ management.security.enabled=false
```
```
### 运行效果
### 运行效果
黑/白名单的IP地址过滤
黑/白名单的IP地址
注册的
过滤
```
xml
```
xml
1. 首先在rule1.xml把本地IP地址写入
1. 首先在rule1.xml把本地IP地址写入
2. 启动discovery-springcloud-example-a/DiscoveryApplication.java
2. 启动discovery-springcloud-example-a/DiscoveryApplication.java
3. 抛出禁止注册的异常,本机不会注册到服务注册发现中心
3. 抛出禁止注册的异常,本机不会注册到服务注册发现中心
```
```
多版本
配置实现
灰度访问控制
多版本灰度访问控制
```
xml
```
xml
1. 运行discovery-springcloud-example-b1、discovery-springcloud-example-b2和discovery-springcloud-example-b3下的DiscoveryApplication.java,
1. 运行discovery-springcloud-example-b1、discovery-springcloud-example-b2和discovery-springcloud-example-b3下的DiscoveryApplication.java,
2. 运行discovery-springcloud-example-a/DiscoveryApplication.java
2. 运行discovery-springcloud-example-a/DiscoveryApplication.java
...
@@ -173,5 +169,10 @@ management.security.enabled=false
...
@@ -173,5 +169,10 @@ management.security.enabled=false
4. 可以观察到通过A服务去获取B服务的被过滤的实例列表,随着A服务定时器会更新不不同的配置,获取到的实例列表也随着变更
4. 可以观察到通过A服务去获取B服务的被过滤的实例列表,随着A服务定时器会更新不不同的配置,获取到的实例列表也随着变更
```
```
屏蔽指定IP地址的服务实例被发现
```
xml
[待完成]
```
## 鸣谢
## 鸣谢
感谢Spring Cloud中国社区刘石明提供代码支持和建议
感谢Spring Cloud中国社区刘石明提供代码支持和建议
discovery-springcloud-example-a/src/main/resources/application.properties
View file @
63dd0991
...
@@ -8,10 +8,8 @@ eureka.instance.metadataMap.version=1.0
...
@@ -8,10 +8,8 @@ eureka.instance.metadataMap.version=1.0
# Plugin config
# Plugin config
# 开启和关闭服务注册层面的控制。一旦关闭,服务注册的黑/白名单过滤功能将失效。缺失则默认为true
# 开启和关闭服务注册层面的控制。一旦关闭,服务注册的黑/白名单过滤功能将失效。缺失则默认为true
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
...
...
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