目录
1. IDC分组逻辑介绍
- 按照IP地址的前三段定位出属于哪个具体的机房。
- 被调服务属于哪个组的信息可以修改,如果不指定就按照IP段的规则来匹配。
1.2. 分组信息的更改
主调会定期从主控中取被调的Obj列表信息,在接受到主调请求后,由主控Registry完成IDC分组的核心逻辑。
核心流程如下:
1.4. 示例
某服务A(A1,A2,A3,A4,A5,A6,A7)在各个地区各个IDC的部署情况如上图。
主调服务B(ip:172.27.206.111)调用A服务,能调用到有: A3
主调服务C调用A服务,能调用到有: A3,A4,A5
主调服务C调用A服务时,A3,A4,A5都停止,能调用到的有: A2
主调服务C调用A服务时,A3,A4,A5,A2,A1,A7都停止,能调用到的有:A6
说明
- 主调的出身已经决定了主调的物理组和逻辑组。
- 被调的出身可修改,将影响主调调用的活动列表。
- 是否启用IDC分组,完全取决于被调!!!
2. Set分组逻辑介绍
2.2. Set分组场景
没有Set分组之前,如下图:
有Set分组后,如下图:
以下图为例:
具体部署情况如下表:
1.A服务调用B、C服务,且三个服务在1,2两个Set分组中都存在,如果1中B服务死掉,则A不会调用2中的B服务,更不会调用SH中的任何B服务,而是直接返回空集给A,因为不在同一个SET中。
2.而对于C服务既在1、2Set组中存在,又存在于SZ地区的通配组中,如果1中的C死了,则既不会去调用SZ地区下的C,也不会调用2中的C,同理相对于F服务,1中的A服务永远也不会调用通配组中的F服务。
3,而对于2中的A服务而言,则可调用通配组中的F服务
4,D服务则可调用SZ中任何C服务(包括通配组和具体SET服务组)
5,对于E服务,C则直接调用通配组中的E服务
调用总体原则:
- 1.主被调双方都要启用SET分组,并且SET全名要一致。
- 2.SET内有被调的(不管死活),只能调用本SET内的。如果没有被调(死的也算有),则只能调用本地区的公共区域的,还没有的话,只能按照IDC分组原则调用未启用SET的。1A->1C, 1A 不能->C, 1A->1F, 1A不能->F, 2A->*F, C->E
- 4.如果不满足1,则按照IDC分组逻辑调用。
3. IDC分组与Set分组的调用规则
编号 | 客户端 | 服务端 | 规则 |
---|---|---|---|
1 | 启用Set | 启用Set | 寻找在同一set的ip地址,如果同一个Set没有可用地址,则返回空 |
2 | 启用Set | 没启用Set/启用IDC | 按IDC分组的寻址返回地址 |
3 | 启用Set | 没启用Set/没启用IDC | 返回所有可用的地址 |
4 | 没启用Set | 启用Set/启用IDC | 按IDC分组的寻址返回地址 |
5 | 没启用Set | 启用Set/没启用IDC | 返回所有可用的地址 |
6 | 没启用Set | 没启用Set/启用IDC | 按IDC分组的寻址返回地址 |
7 | 没启用Set | 没启用Set/没启用IDC | 返回所有可用的地址 |