work -- 3




200x200


引言主页君自2017年2月至2018年6月主导了一套新零售订单履约系统的构建与维护,起初三个人从零开始历时三个月搭建一套完善可用的订单履约系统,迎来线上外卖店开业,到一年后团队扩充到十六人,如今离职

#work    #电子商务    #新零售    #mtdp   
事故描述2015-09-21 15:43:34 到 2015-09-21 16:13:45 之间用户通过客户端 APP 查看“我的订单”列表会查看到同时登陆的其他用户订单2015-09-21 16:13:45 到 2015-09-21 16:36:17 之间用户无法查看客户端 APP 查看“我的订单”列表页面 事故原因分析spring 框架的 bean 默认以单例模式(这里并不是指 GOF 设计模式中的单例模式,而是在 spring 的 IOC 容器中只会存在一个该 bean 创建的对象)启动,这个类对象的成员数据共享,因此用户的请求数据被共享,后到的 request 覆盖了已经存在的 request 数据,等待的用户返回了后到的用户查询到的结果 关于测试测试过程中可以避免这个问题的发生吗?测试没有模拟并发的问题,这个问题是无法出现的,这也是事故发生后一个多小时无法定位到的主要原因 -- 不能在测试环境中复现然而,小流量上线显然是可以触发的,然而,在小流量上
#技术帖    #php    #技术分享    #work   
一、加锁以及防止程序意外崩溃每台机器上布2个 schedule 进程,在rabbitmq中放一个任务键值,两个进程哪个取到这个键即进行后续工作,另一个处于等待状态当工作处理完毕,重新插入该键值,如果插入失败,直接退出,插入成功则ack 二、集群控制及调度周期控制在缓存中建立 id => schedule_time 的对应关系,每次获取当前时间以前的所有ID,然后进入第三步,处理结束后,zadd,如果调度程序中途退出,可以保证该id被调度 三、减轻MYSQL压力以及防止缓存意外崩溃将数据库中字段组成xml存入缓存,调度程序如果在缓存中没有查到ID(缓存意外崩溃),那么到数据库中差找字段插入缓存,否则直接从缓存读取一个守护进程定时同步数据库与缓存之间的数据 
#技术帖    #技术分享    #work    #工作   



京ICP备2021035038号