File tree Expand file tree Collapse file tree 2 files changed +6
-7
lines changed
spring-cloud-gray-samples Expand file tree Collapse file tree 2 files changed +6
-7
lines changed Original file line number Diff line number Diff line change 14
14
从上面的场景分析,可以归纳出两个对象:服务实例和调用请求;服务实例的灰度管理是基础,调用请求时如何决策路由,都是根据服务实例的灰度策略去判断的。既然有灰度管理这个概念,那么从功能上分,就会有client-server之分,所以又可以从gray-client和gray-server去分析。接下来将一步一步去分析这四个方面。
15
15
16
16
* 灰度实例
17
-
18
- [ 灰度实例] ( ../doc/img/u-case-service-instance.png )
17
+ ![ 灰度实例] ( ../doc/img/u-case-service-instance.png )
19
18
实例注册:服务实例添加到灰度管理中。
20
19
实例下线:服务实例下线,从灰度管理中删除。
21
20
灰度开关:调整服务实例的灰度状态,有启用、禁用两个状态,禁用的实例不纳入灰度列表中。
22
21
灰度策略:请求是否可以被转发到该服务实例的条件,只有通过,请求才有可能会被转发到该实例上。
23
22
24
23
* 调用请求
25
24
26
- [ 调用请求] ( ../doc/img/u-case-call-request.png )
25
+ ! [ 调用请求] ( ../doc/img/u-case-call-request.png )
27
26
灰度决策:根据请求的信息去匹配灰度服务实例的灰度策略,如果匹配上,会将服务实例加入到通过列表中。如果都没有匹配上,就按bamboo的路由规则去筛选非灰度的服务实例进行转发。
28
27
29
28
30
29
* 灰度客户端
31
30
32
31
调用请求的服务消费者,和提供服务的服务提供者都可以是灰度客户端,因为微服务中,大多服务实例既是服务提供者,同时也是服务消费者。
33
- [ 灰度客户端] ( ../doc/img/u-case-gray-client.png )
32
+ ! [ 灰度客户端] ( ../doc/img/u-case-gray-client.png )
34
33
灰度服务注册:服务实例在启动时,就会向灰度服务端发起请求,将实例自身的灰度开关打开。
35
34
灰度服务下线:在服务实例下线前,会触发钩子,向灰度服务端发起请求将实例自身从灰度列表中删除。
36
35
接收灰度实例调整消息:接收由灰度服务端推送过来的灰度列表更新消息比如新增灰度实例,删除灰度实例等,维护缓存在实例上的灰度列表。
39
38
* 灰度服务端
40
39
41
40
灰度服务端负表维护灰度列表,可以新增、删除、编辑灰度信息。
42
- [ 灰度服务端] ( ../doc/img/u-case-gray-server.png )
41
+ ! [ 灰度服务端] ( ../doc/img/u-case-gray-server.png )
43
42
编辑灰度实例:新增灰度实例,删除灰度实例,修改实例灰度状态。
44
43
编辑灰度策略:新增实例灰度策略,删除实例灰度策略,修改灰度策略状态。
45
44
推送灰度服务调整消息:向灰度客户端推送灰度列表变动消息,比如新增灰度实例,删除灰度实例,修改实例灰度状态等。
49
48
50
49
##### 代码设计
51
50
根据上面的思路,设计以下对象和接口。共6个接口,4个模型对象。
52
- [ 灰度代码设计] ( ../doc/img/cd-gray.png )
51
+ ! [ 灰度代码设计] ( ../doc/img/cd-gray.png )
53
52
对象:
54
53
* GrayService: 灰度服务
55
54
* GrayInstance: 灰度实例,有状态属性
Original file line number Diff line number Diff line change @@ -57,7 +57,7 @@ public class GrayServerApplication {
57
57
```
58
58
59
59
启动后,可以访问http://localhost:20202/swagger-ui.html查看接口列表,也可以调用其中的接口。
60
- [ 灰度服务端swagger api list] ( ../doc/img/web-api-gray-server.png )
60
+ ! [ 灰度服务端swagger api list] ( ../doc/img/web-api-gray-server.png )
61
61
62
62
以上介绍完了gray-server的配置,下面再看gray-client的配置。
63
63
You can’t perform that action at this time.
0 commit comments