简介
tars的分组可实现跨地区、跨机房、环境隔离提供服务可用性。
IDC分组介绍
为了加快服务间的访问速度,建设跨地区、跨机房调用带来的网络资源消耗,减少网络故障带来的影响,框架提供了跨地区、跨机房,就近接入的功能。
说明
- 按照IP地址的前三段定位出属于哪个具体的机房。
- 被调服务属于哪个组的信息可以修改,如果不指定就按照IP段的规则来匹配。自动分组
- 主调的出身已经决定了主调的物理组和逻辑组。
- 被调的出身可修改,将影响主调调用的活动列表。
- 是否启用IDC分组,完全取决于被调服务IP!!!
核心流程
- 1.首先从数据库中检索出该服务所有的“活动列表”和“非活动列表”
- 2.根据客户端IP得出调用者所处的物理组,假设为GROUP_A
- 3.遍历“活动列表”,将属于GROUP_A的所有IP检索出来。如果找到了,将这些IP返回给客户端,并退出;否则进行第4步。
- 4.按照t_group_priority定义的优先级,遍历所有逻辑组。如果在某个逻辑组中,发现了活动IP,则将这些IP返回给客户端,并退出;否则查找下一个逻辑组,如果在所有的逻辑组仍然没有找到活动IP,则进行第5步。
- 5.遍历“活动列表”,将属于组“-1”,也就是将没有启动分组的IP检索出来。如果找到了,将这些IP反馈给用户。如果没有找到,则进行第6步。
- 6.将从数据库中检索出的“活动列表”直接返回。
Set分组介绍
为了方便对业务服务部署管理进行标准化和容量化,框架提供了Set部署能力,set之间没有调用关系,互不干扰,故障隔离,提高运维效率和服务可用性
说明
- Set名: 定义一个大的Set名称,可以以业务名称来定义。
- Set地区:可以按照地区来对划分如n,b(南北),也可以以城市来分如sh(上海),sz(深圳)等。
- Set组名:实际可以重复的组单元的名称,一般是 0,1,2,3,4,5,
核心流程
- 1.主被调双方都要启用SET分组,并且SET全名要一致。
- 2.SET内有被调的(不管死活),只能调用本SET内的。如果没有被调(死的也算有),则只能调用本地区的公共区域的,还没有的话,只能按照IDC分组原则调用未启用SET的。
- 3.通配组服务可调用SET内和通配组的任何服务
- 4.如果不满足1,则按照IDC分组逻辑调用。
调用关系
A服务 | 调用结果 | B服务 | ||||
set名 | Set地区 | Set组名 | set名 | Set地区 | Set组名 | |
trust | SZ | 1 | √ | trust | SZ | 1 |
× | trust | SZ | 2 | |||
× | trust | SZ | * | |||
× | trust | SH | 1 | |||
× | trust | SH | 1 | |||
trust | SZ | 2 | × | trust | SZ | 1 |
√ | trust | SZ | 2 | |||
× | trust | SZ | * | |||
× | trust | SH | 1 | |||
× | trust | SH | 1 | |||
trust | SZ | * | √ | trust | SZ | 1 |
√ | trust | SZ | 2 | |||
√ | trust | SZ | * | |||
× | trust | SH | 1 | |||
× | trust | SH | 1 |
IDC分组与Set分组的调用
A服务 | B服务 | 规则 |
启用Set | 启用Set | 寻找在同一set的ip地址,如果同一个Set没有可用地址,则返回空 |
启用Set | 没启用Set/启用IDC | 按IDC分组的寻址返回地址 |
启用Set | 没启用Set/没启用IDC | 返回所有可用的地址 |
没启用Set | 启用Set/启用IDC | 按IDC分组的寻址返回地址 |
没启用Set | 启用Set/没启用IDC | 返回所有可用的地址 |
没启用Set | 没启用Set/启用IDC | 按IDC分组的寻址返回地址 |
没启用Set | 没启用Set/没启用IDC | 返回所有可用的地址 |