资讯专栏INFORMATION COLUMN

一个故障的生命周期

pcChao / 2780人阅读

摘要:这是一个关于的故事前奏记录移动设备在移动开发中应该是很常见的操作,一般的流程是移动设备在应用商店中下载后打开,这时客户端程序会将获取设备信息并提交到服务器端接口入库。

这是一个关于mysql的故事

前奏:

记录移动设备id在移动开发中应该是很常见的操作,一般的流程是:移动设备在应用商店中下载app后打开,这时客户端程序会将获取设备信息并提交到服务器端接口入库。但是由于XX原因我们需要在这之前再加一个同样的请求,也就是在这之前有可能已经写入数据库了,但是还要再走一遍相同的逻辑。

症状:

当我写好程序交由客户端同学去测试的时候,不可思议的事情发生了:有大概20%的概率会报错“Duplicate entry XXX”(此处省去30字),然后客户端同学还反映说如果两个请求间隔1秒钟就没问题。

分析

我看完代码后发现逻辑是这样的:model文件里首先判断设备id是否存在,不存在则写入。结合之前的反馈我断定:第一次写入成功且第二次判断时为空的时候,再写入的时候数据库里已经有数据了。运维同学说服务器mysql是读写分离的,也就是说出现这种问题的原因是:第一次访问服务器时如果设备id不存在(slave)则写入master,这时master开始向slave同步,第二次访问服务器时如果之前的同步完成了则不会二次写入,如果同步没有完成则会第二次写入master,这时就报错了。

解决

1.既然客户端同学说延迟1秒就ok了淡然可以这样干,但是这个时间其实和同步时间相关的,不一定是这个数字,有一定的风险,所以不建议采纳,但是救急是可以的。

2.我的方案是:第一次写入的时候将当前的设备id保存在memcache中,第二次访问的时候直接判定memcache中是否存在,保存时间的话,设置个10秒钟基本就够了。

结语:

其实这种连续写入同一数据到同一表中的需求不是很多,但是业务需求千奇百怪,熟悉业务的同时也要熟悉生产环境,这样才能快速定位问题,解决问题。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30250.html

相关文章

  • 阿里如何做到百万量级硬件故障自愈?

    摘要:只有当超时故障扇区等明确故障项出现后,两者关联才确诊硬盘故障,否则只是隔离观察,不报修。如果存在进程住时间超过分钟,我们认为这个硬盘故障的影响面已扩大到了整机,需要进行重启消除影响。 随着阿里大数据产品业务的增长,服务器数量不断增多,IT运维压力也成比例增大。各种软、硬件故障而造成的业务中断,成为稳定性影响的重要因素之一。本文详细解读阿里如何实现硬件故障预测、服务器自动下线、服务自愈以...

    Sanchi 评论0 收藏0
  • 私有云部署-UCloudStack私有云部署之虚拟机

    摘要:虚拟网卡与虚拟机的生命周期一致,无法进行分离,虚拟机被销毁时,虚拟网卡即被销毁。每块虚拟网卡支持绑定一个安全组,提供网卡级别安全控制。平台默认提供块虚拟网卡,若业务有块以上网卡需求可通过绑定弹性网卡,为虚拟机提供多网络服务。虚拟机是 UCloudStack 云平台的核心服务,提供可随时扩展的计算能力服务,包括 CPU 、内存、操作系统等最基础的计算组件,并与网络、磁盘等服务结合提供完整的计算...

    ernest.wang 评论0 收藏0
  • 云原生机制三个核心思想及其未来之路

    摘要:事实上,这种快捷的发布周期需要配合一系列流程工具甚至是管理文化,从而共同支撑起一套安全且可靠的云原生应用程序运作机制。云原生框架云原生应用程序的一大关键性特质在于,其需要遵循一套设计契约以较大程度实现行为的可预测性。 摆脱临时性自动化方案之定位,发挥优势以实现可预测功能。您能否以每周为单位向客户发布各类新功能?甚至进一步达到以每天乃至每小时为单位?新晋开发人员能否在上班的第一天即进行代码部署...

    陈伟 评论0 收藏0
  • Mirantis决定采用Kubernetes作为 Openstack生命周期管理工具

    摘要:云原生路径谷歌花了十几年时间开发应用和提炼云原生计算的原则。和云原生模式将通过滚动更新版本控制和新组件新功能的金丝雀部署来提高生命周期管理。此外,用户将受益于可自我恢复的基础设施,使更易于管理,对核心服务和单个计算节点的故障恢复更具有弹性。 Mirantis是OpenStack的主要贡献者,今天他宣布将使用Kubernetes作为底层编排引擎重写其私有云平台。我们认为这是推进OpenS...

    468122151 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<