Commit 3469ac88 by Nepxion

修改介绍

parent 24b5742d
...@@ -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服务的列表
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment