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
3469ac88
Commit
3469ac88
authored
Jul 01, 2018
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改介绍
parent
24b5742d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
12 deletions
+38
-12
README.md
+38
-12
No files found.
README.md
View file @
3469ac88
...
@@ -20,24 +20,34 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
...
@@ -20,24 +20,34 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
## 简介
## 简介
1. 实现服务注册层面的控制,基于黑/白名单的IP地址过滤机制禁止对相应的微服务进行注册,一旦禁止注册,将发送异步事件通知(可关闭)
1. 实现服务注册层面的控制
2. 实现服务发现层面的控制,基于黑/白名单的IP地址过滤机制禁止对相应的微服务被发现;通过对消费端和提供端可访问版本对应关系的配置,进行多版本灰度访问控制
1.1 基于黑/白名单的IP地址过滤机制禁止对相应的微服务进行注册
3. 实现通过下面两种推送方式,动态改变“服务发现层面的控制”
1.2 基于最大注册数的限制微服务注册。一旦微服务集群下注册的实例数目已经达到上限(可配置),将禁止后续的微服务进行注册
4. 实现通过XML进行规则定义
2. 实现服务发现层面的控制
5. 实现通过事件总线机制(EventBus)异步对接远程配置中心,接受远程配置中心主动推送规则信息
2.1 基于黑/白名单的IP地址过滤机制禁止对相应的微服务被发现
6. 实现通过事件总线机制(EventBus)和Spring Boot Actuator,异步接受Rest主动推送规则信息
2.2 基于版本配对,通过对消费端和提供端可访问版本对应关系的配置,进行多版本灰度访问控制
7. 实现通过Listener机制便于使用者扩展更多过滤条件,也可以利用Listener实现服务注册发现核心事件的监听
4. 实现通过XML进行上述规则的定义
5. 实现通过事件总线机制(EventBus)的功能,实现发布/订阅功能
5.1 对接远程配置中心,异步接受远程配置中心主动推送规则信息
5.2 结合Spring Boot Actuator,异步接受Rest主动推送规则信息
5.3 在服务注册层面的控制中,一旦禁止注册的条件触发,主动推送异步事件,以便使用者订阅
7. 实现通过Listener机制进行扩展
7.1 使用者可以自定义更多的规则过滤条件
7.2 使用者可以对服务注册发现核心事件进行监听监听
8. 实现通过Spring Boot Actuator的集成,提供健康检查功能
8. 实现通过Spring Boot Actuator的集成,提供健康检查功能
9. 实现支持未来扩展更多的服务注册中心
## 场景
## 场景
1. 黑/白名单的IP地址注册的过滤
1. 黑/白名单的IP地址注册的过滤
开发环境的本地服务(例如IP地址为172.16.0.8)不希望被注册到测试环境的服务注册发现中心,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤)的规则
开发环境的本地服务(例如IP地址为172.16.0.8)不希望被注册到测试环境的服务注册发现中心,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤)的规则
我们可以通过提供一份黑/白名单达到该效果
我们可以通过提供一份黑/白名单达到该效果
2. 黑/白名单的IP地址发现的过滤
2. 最大注册数的限制的过滤
当某个微服务注册数目已经达到上限(例如10个),那么后面起来的微服务,将再也不能注册上去
3. 黑/白名单的IP地址发现的过滤
开发环境的本地服务(例如IP地址为172.16.0.8)已经注册到测试环境的服务注册发现中心,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤)的规则,该本地服务不会被其他测试环境的服务所调用
开发环境的本地服务(例如IP地址为172.16.0.8)已经注册到测试环境的服务注册发现中心,那么可以在配置中心维护一个黑/白名单的IP地址过滤(支持全局和局部的过滤)的规则,该本地服务不会被其他测试环境的服务所调用
我们可以通过推送一份黑/白名单达到该效果
我们可以通过推送一份黑/白名单达到该效果
3
. 多版本灰度访问控制
4
. 多版本灰度访问控制
A服务调用B服务,而B服务有两个实例(B1、B2),虽然三者相同的服务名,但功能上有差异,需求是在某个时刻,A服务只能调用B1,禁止调用B2。在此场景下,我们在application.properties里为B1维护一个版本为1.0,为B2维护一个版本为1.1
A服务调用B服务,而B服务有两个实例(B1、B2),虽然三者相同的服务名,但功能上有差异,需求是在某个时刻,A服务只能调用B1,禁止调用B2。在此场景下,我们在application.properties里为B1维护一个版本为1.0,为B2维护一个版本为1.1
我们可以通过推送A服务调用某个版本的B服务对应关系的配置,达到某种意义上的灰度控制,切换版本的时候,我们只需要再次推送即可
我们可以通过推送A服务调用某个版本的B服务对应关系的配置,达到某种意义上的灰度控制,切换版本的时候,我们只需要再次推送即可
...
@@ -84,6 +94,7 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
...
@@ -84,6 +94,7 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
```
xml
```
xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<rule>
<!-- 如果不想开启相关功能,只需要把相关节点删除即可,例如不想要黑名单功能,把blacklist节点删除 -->
<register>
<register>
<!-- 服务注册的黑/白名单注册过滤,只在服务启动的时候生效。白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。每个服务只能同时开启要么白名单,要么黑名单 -->
<!-- 服务注册的黑/白名单注册过滤,只在服务启动的时候生效。白名单表示只允许指定IP地址前缀注册,黑名单表示不允许指定IP地址前缀注册。每个服务只能同时开启要么白名单,要么黑名单 -->
<!-- filter-type,可选值blacklist/whitelist,表示白名单或者黑名单 -->
<!-- filter-type,可选值blacklist/whitelist,表示白名单或者黑名单 -->
...
@@ -98,6 +109,15 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
...
@@ -98,6 +109,15 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
<!-- <whitelist filter-value="">
<!-- <whitelist filter-value="">
<service service-name="" filter-value=""/>
<service service-name="" filter-value=""/>
</whitelist> -->
</whitelist> -->
<!-- 服务注册的数目限制注册过滤,只在服务启动的时候生效。当某个服务的实例注册达到指定数目时候,更多的实例将无法注册 -->
<!-- service-name,表示服务名 -->
<!-- filter-value,表示最大实例注册数 -->
<!-- 表示下面所有服务,最大实例注册数为10000(全局配置) -->
<count
filter-value=
"10000"
>
<!-- 表示下面服务,最大实例注册数为5000,全局配置值10000将不起作用,以局部配置值为准 -->
<service
service-name=
"discovery-springcloud-example-a"
filter-value=
"5000"
/>
</count>
</register>
</register>
<discovery>
<discovery>
...
@@ -150,6 +170,12 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
...
@@ -150,6 +170,12 @@ Nepxion Discovery是一款对Spring Cloud Discovery的服务注册增强插件
2. 局部过滤,指专门针对某个服务而言,那么真正的过滤条件是全局过滤+局部过滤结合在一起
2. 局部过滤,指专门针对某个服务而言,那么真正的过滤条件是全局过滤+局部过滤结合在一起
```
```
### 最大注册数的限制的过滤规则策略
服务启动的时候,一旦微服务集群下注册的实例数目已经达到上限(可配置),将禁止后续的微服务进行注册
```
xml
1. 全局配置值,只下面配置所有的服务集群,最多能注册多少个
2. 局部配置值,指专门针对某个服务而言,那么该值如存在,全局配置值失效
```
### 黑/白名单的IP地址发现的过滤规则策略
### 黑/白名单的IP地址发现的过滤规则策略
服务启动的时候,禁止指定的IP地址被服务发现。它使用的方式和“黑/白名单的IP地址注册的过滤”一致
服务启动的时候,禁止指定的IP地址被服务发现。它使用的方式和“黑/白名单的IP地址注册的过滤”一致
...
@@ -331,14 +357,14 @@ spring-cloud-consul的2.0.0.RELEASE(目前最新的稳定版)支持consul-ap
...
@@ -331,14 +357,14 @@ spring-cloud-consul的2.0.0.RELEASE(目前最新的稳定版)支持consul-ap
```
```
### 运行效果
### 运行效果
黑/白名单的IP地址注册的过滤
黑/白名单的IP地址注册的过滤
& 最大注册数的限制的过滤
```
xml
```
xml
1. 首先在rule.xml把本地IP地址写入
1. 首先在rule.xml把本地IP地址写入
,或者修改最大注册数为0
2. 启动Application
2. 启动Application
3. 抛出禁止注册的异常,即本机不会注册到服务注册发现中心
3. 抛出禁止注册的异常,即本机不会注册到服务注册发现中心
```
```
黑/白名单的IP地址发现的过滤
,
多版本灰度访问控制(单个微服务需要推送多次,如果是远程配置中心,则推送一次够了)
黑/白名单的IP地址发现的过滤
&
多版本灰度访问控制(单个微服务需要推送多次,如果是远程配置中心,则推送一次够了)
```
xml
```
xml
1. 启动3个工程共6个Application
1. 启动3个工程共6个Application
2. 通过Postman或者浏览器,执行GET http://localhost:1100/instances/discovery-springcloud-example-b,查看当前A服务可访问B服务的列表
2. 通过Postman或者浏览器,执行GET http://localhost:1100/instances/discovery-springcloud-example-b,查看当前A服务可访问B服务的列表
...
...
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