三方接口补偿方案时针对重复失败数据入库的摘要处理如何处理哈希碰撞?

2022-09-23 10:18:22 +08:00
 leeqingshui

业务系统与多个第三方系统进行对接时,需要调用外部系统接口进行数据的交换,如果在接口请求的过程中发生了网络抖动或其他问题,会导致接口调用失败; 对于此类问题,需要一个接口重新调用补偿机制,在发生网络抖动时可以进行自动或手动地补偿调用

搜寻资料时发下有人给过一个对应的方案,方案网址: https://cache.one/read/4640698

此解决方案是会对接口调用的数据进行记录,然后存到一个补偿表中,但上述方案的补偿表设计是否有问题?

其中定义了一个数据防重字段:unique_hash_code Unique_key Hash(class_name+method_name+method_param_values)

即根据方法类名加方法名及方法参数生成一个 hash 值,这个 hash 值会出现碰撞吧?

所以,针对于这个字段大佬你们是怎么设计的?增加字段再 hash 处理嘛?或者有啥其他更优的处理方案( doge )

1953 次点击
所在节点    程序员
27 条回复
leeqingshui
2022-09-23 15:56:36 +08:00
@zmal 嗯嗯,好哒~
leeqingshui
2022-09-23 15:57:23 +08:00
@msg7086 😂
leeqingshui
2022-09-23 16:04:11 +08:00
@lmshl 嗷,会考虑一部分逻辑使用这种实现~
securityCoding
2022-09-24 01:36:07 +08:00
老哥你都要补偿了,还反重有啥用,业务幂等就行
wolfie
2022-09-26 10:21:28 +08:00
@leeqingshui
根据 method 入参找文件,在将文件转 base64 作为请求参数。
我还是会出一个接口,作为补偿入口。因为反射不好管理。

这个是我写的基于 http 的补偿。
/t/882939
leeqingshui
2022-09-26 11:07:32 +08:00
@wolfie 嗯呢,我看到了,我这边也写了 80%,这周有空完善下,国庆我会把代码放出来,B 站再录个视频说明下~
leeqingshui
2022-10-08 09:41:44 +08:00
@wolfie 这块国庆抽时间弄了下~
视频地址:aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vMjAzNTE2NzkzL3ZpZGVv
代码地址:aHR0cHM6Ly9naXRodWIuY29tL0Nocmlzc3NXb25nL2ludm9rZS1jb21wZW5zYXRpb24=

后面的优化下周会弄下~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/882316

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX