TroubleShooting - 迁移到集群环境数据错乱问题

52 篇文章 0 订阅

最近系统出了个问题,发现系统发布出去的某一条链式结构的数据出现断链的问题,调查发现这是在单系统迁移到集群环境中没有考虑清楚导致多个节点同时修改数据而出现的错误,这里介绍下问题的来龙去脉。

我们的系统持续接受外部系统提供的产品的信息(每次一个产品),对产品信息进行加工,把加工后的产品数据按产品类型加入内存数组,每次有新产品加入数组,就需要把数组数据打包成链式结构(外部数据结构要求),然后发给其他外部系统。单节点的时候对数组的产品添加,以及整个链式数据发送在同个类中使用了synchronized,所以产品都是先添加进数组,然后再组装成链式结构发送出去,在发送过程中也不会出现数组数据被修改的可能性,系统工作正常。在搬到集群环境中后由于多个节点都可以接受产品信息,所以数组被存在了distributedmap里面,但是数组数据没有使用distributed lock来保证组装链式数据的时候数组数据不被修改,链式数据可能会出现nextlink不存在,但是数据却真实存在。

这个问题的源头是要解决多节点同时修改数据的问题,可以通过使用distribution lock来解决。

不过发现更坑爹的问题,因为每次有新产品加入数组,都会触发一次同类型产品的链表结构的组装和发送,如果网络有问题,可能会出现后发出链式数据先到下个节点。单节点的时候由于链式数据中存有创建时间戳,所以下个节点不会出现后创建的链式数据被覆盖的现象。不过对于集群环境,链式数据的时间戳不再是顺序的,当短时间很多个产品进入系统的时候,就可能发生数据多的链式数据的创建时间戳更早同时更早到达下个节点,结果就悲催的被覆盖了。

为了解决这个问题,最好的办法就把发送任务做成集群里的单节点任务 (可以参考clustertimer规范的实现),其他节点只更新distributedmap中的内存数组。同时为了防止链式数据发送过于频繁,把收到产品就发送链式数据改成每分钟检测一次是否有缓存的新产品,有才创建链式数据发送到下一个节点。

### 回答1: 无法验证您的验证码响应。请访问https://docs.github.com/articles/troubleshooting-connectivity-problems/#troubleshooting-the-captcha获取故障排除信息。 ### 回答2: “无法确认您的验证码回应,请访问 https://docs.github.com/articles/troubleshooting-connectivity-problems/” 是GitHub上使用某些功能时可能遇到的错误提示信息。它意味着您提交的验证码未通过验证,这可能是因为您的网络环境或设备出现了问题。 如果您遇到这个问题,可以从以下几个方面解决: 1. 确认您正在使用支持的浏览器和版本,例如Google Chrome、Firefox、Microsoft Edge等。如果您使用的是旧版浏览器或移动端浏览器,验证码可能无法在其中正常工作。 2. 检查您的网络连接是否正常。如果您的网络连接不稳定或受阻,则可能无法验证验证码。请尝试重启您的路由器或调整您的网络设置。 3. 清除浏览器缓存和cookie。与验证码相关的信息可能被存储在浏览器缓存或cookie中,清除它们后再次尝试可能有助于解决问题。 4. 如果以上方法无法解决问题,则可以访问 https://docs.github.com/articles/troubleshooting-connectivity-problems/ 获取更多帮助。该文档包含了关于GitHub连接问题的常见故障排除方法,如DNS设置、网络代理设置等,通过遵循步骤进行排除可能解决问题。 总之,如果您遇到无法验证验证码回应的问题,请先检查您的网络环境和设备,然后按照上述方法进行排除。如果问题仍然存在,可以访问GitHub的帮助文档或联系技术支持获取进一步的帮助。 ### 回答3: 当你在使用GitHub时,可能遇到一些连接问题。其中一种常见的问题是“unable to verify your captcha response”(无法验证您的验证码响应)。当您收到此错误消息时,这意味着您要么没有正确输入验证码,要么您的网络连接存在问题。这篇文章介绍了一些排查和解决这个问题的方法。 首先,您需要确保已正确输入验证码。验证码通常是一组数字或字母,用于防止自动化程序攻击。确保您输入的是正确的验证码,而不是其它字符或文字。如果您没有完全确定验证码是什么,可以点击刷新按钮以获取新的验证码。 然后,您需要检查您的网络连接。这可能是因为您的网络连接速度太慢或您的网络配置存在问题。要解决这个问题,您可以尝试重启路由器或尝试连接一个更稳定的网络。 如果这些方法都没有解决问题,您可以尝试通过重启计算机或清除浏览器缓存来解决该问题。有时候,缓存可能导致问题出现,因此清除缓存可能有所帮助。 最后,如果您尝试了以上所有方法仍无法解决问题,您可以访问https://docs.github.com/articles/troubleshooting-connectivity-problems/获取更多相关信息和帮助。在这个网站上,您可以找到详细的解决方案和一些常见问题的解决方式,以确保您可以顺利地使用GitHub。 总的来说,无法验证您的验证码响应可能是一个非常烦人的问题,但是您可以尝试以上方法来解决该问题。如果一切失败,GitHub提供了很多支持和解决方案,您可以通过他们的网站找到更多相关信息和帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值