问题出现场景
当时一个项目的小姐姐,找到我说,调我们同步用户数据的接口有重复数据,经过数据发现同步过来的数据插入数据的时间是相同的,再看日志发现我们这边有三次调用的记录,看小姐姐写的服务的日志,调用接口处只打印了一次调取的日志。
与小姐姐语音看过代码
反复看小姐姐的代码逻辑发现,没有啥问题,错误后有几次补偿调用,也没有问题;小姐姐有着急,说家里测试环境,没有问题,在客户测试环境有这个问题,我当时也觉得奇怪。感觉两边代码都没问题。
代码没问题,看dubbo配置呗
先看了我们provide的配置,没有相关的重复调取的配置 再看小姐姐那块,发现consumers里面有个retries=3的配置, 这个失败重试次数,引起我的怀疑,难道是这个问题,果断把这个配置设置为retries=0 ,重启服务,发现报错了,报dubbo调用超时,默认是1000ms
修改dubbo超时配置
设置timeout=5000 后重启, 发现调用同步接口成功并且只有一条数据;
问题解决后,被小姐姐一顿感谢
多谢大佬,,,,,,溢美之词,啧啧。。。 我只是淡定的说小事
总结
dubbo问题,提供者与消费者的配置要多看看熟悉一下; 比如之前遇到过返回数据太大,报错的 可以在服务方设置dubbo允许返回的字节 dubbo.protocol.payload: 20971520 还有dubbo的invoke命令,dubbo的高版本默认不开启invoke执行的需要手动配置 dubbo.protocol. telnet: invoke
|