erlang节点时间问题

昨天发现线上游戏后台开关出了问题,吓得我赶紧去看一下。习惯性上主节点打印出ets发现ets存的数据都对但是登录游戏却看到到时间关的活动没关到。。。怀疑了一下人生后,决定上2节点看一下,发现1节点的ets上存的活动确实关了,但是2节点上的还是开着的,吓得我赶紧看一下代码,发现以前的大兄弟写的是跨天时每个节点自己加载一下模板表,算一次自己的活动开关。后续的开关变化都由主节点通知。想了各种情况最后发现是每个节点拿的时间戳是不同的。如果都是拿系统时间就不会有问题的,但是当初设计的时候erlang都是启动的时候自己内部计算自己的时间戳的,所以开的久的节点是有可能会造成时间误差的。上面后台开关出现的问题是主节点的时间是正确的但是副节点的时间确跑慢了,本来该关的活动只有主节点关了。而跨天的时候又是每个节点自己算自己的所以在主节点上已关的活动不会再通知副节点去关了。。。(解决办法,跨天后由主节点通知副节点同步一份主节点最新的数据)。eg(当初用ets不用进程字典是考虑到了效率问题,不用每次取时间戳都去call主节点所以才用了ets)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值