admin 发表于 2024-3-11 04:50:59

【请求序号的作用】



这个参数主要是为了防止记录时多线程冲突的

例子:假如我要编写一个记录的功能

目前一般能取到的时间极限是毫秒,那么假如两条请求同时到达,并且,ip来源、get数据、post数据全部相同,那么如何加以区分,因为我们要记录2次,记录的标志头如何写?但是引入了请求序号这个参数后,再配合取时间戳函数,则可以从理论上避免上述的情况
请求序号和传递序号的区别:
1:请求序号每次程序重启则会自动重置为0,传递序号是记录在本地的
2:请求序号是全局序号,传递序号是子程序的,也就是单次启动后,传递序号会相同相同的,请求序号是唯一的
3:请求序号一般用于记录相关(防止数据同时到达导致记录覆盖),传递序号一般用于取数据(确保多个客户端可以取到不同的数据)

请求序号的设计由来
在设计的时候,考虑到了记录的需要,根据测试,取13位的时间戳(毫秒级)可以确保同一个子程序中的2条记录值有不同的记录名,但是如果不同的子程序有同一个需求,是否会导致无法区分记录名?因此我想到了传递序号
因为传递序号在子程序范围里具备了唯一性,但是关键在于,EWEB可以加载多个DLL,也就是子程序名称可以重复,因此要想取得唯一标志,则需要进行DLL名称+子程序名称+传递序号+取13位时间戳的算法确保每一条数据都有唯一的标志,但是这太麻烦了,因此最终设计出了请求序号

请求序号+取13位时间戳可以确保每一条数据都有唯一的标志



点击返回: 【EWEB总览】


页: [1]
查看完整版本: 【请求序号的作用】