下面从特性、规则、生成、模块传递等几个方面对这四个ID进行定义和解释说明。
ID类型 | 特性 | 规则 | 产生 | 作用 | 场景 | 使用 |
RequestId | 唯一性 排序行 归并性 | 纳秒数(15)+系统编号/类型(3)+用户ID | 网关接受线程进请求后在网关逻辑模块产生 | 用于保证浏览器每次请求的独立划分 | 1.排序:对用户的请求进行排序和简单的时间定位; 2.归并:将某一用户的请求归类并排序,分析用户的操作行为。 | 网关接收请求后在网关逻辑模块创建。如果需要将请求的调用练成线记录,则在调用其他模块时传递requestID |
SessionId | 唯一性 | 随机数+时间+jvmId | 浏览器第一次访问服务器时,服务器调用HttpServletRequest.getSession(true)方法产生session。sesionId和它对应的唯一标识 | 服务器端的session保存着用户登陆的信息,通过sessionId可以找到session中用户的信息 | 1.根据sessionId判断是否是同一次会话,既用户是否已经登陆; 2.当用户请求量很大时,可以通过设置session的过期时间来及时清除内存减压。 | 在权限模块或实现CAS时,可能需要使用,其他模块不需要使用和传递。 |
HandleId | 唯一性 归并性 | 业务系统编号(2-3)+时间纳秒数(15)+随机数(1-3) | 全局使用(业务需要定义唯一性时) | 唯一标识某物,使其在系统内部具有唯一可识别性 | 用于生成设备id、用户id等 | |
ResultId | 首位(成/败):1 + 系统标示符:000 + 错误类型: 输入参数数量有误01 输入参数格式有误02 返回结果有误03 + 具体错误描述码000: | 全局使用,当业务逻辑判断出现break的情况下产生 | 返回错误码,帮助定位问题。 | 例如: 100101003 1(失败)001(权限模块)01(输入参数格式有误)003(***参数长度不符) | 业务调用不需要传递,抛出业务自定义类时需要抛出;或打印日志时输出; |