simpledateformat格式化日期毫秒 simpledateformat日期格式

工作经历在存储大量数据和获取列表的业务场景中,我们采用Mongodb存储模式,其中标记有时间业务的字段用String数据类型定义。简单描述一下业务场景,系统A通过Http接口向系统B提交业务数据,请求参数有唯一的序列号标识;系统B将业务数据存储在Mongodb中,异步处理和组装数据...

工作经历

在存储大量数据和获取列表的业务场景中,我们采用Mongodb存储模式,其中标记有时间业务的字段用String数据类型定义。

简单描述一下业务场景,系统A通过Http接口向系统B提交业务数据,请求参数有唯一的序列号标识;系统B将业务数据存储在Mongodb中,异步处理和组装数据,提交给系统C(银行系统)。系统C处理完数据后,会以异步回调的形式通知系统B;系统B通过对应关系找到系统A的唯一序列号,然后异步回调给系统A。

业务流程图示意图

发现问题

业务反馈,开发童鞋介入,发现系统A编辑了相同的交易(业务单),然后重新请求系统B,直到回调其实是上一版本业务单的回调;另外,系统A在接收回调的接口上做了幂等运算,忽略了这个请求;因此,业务编辑器提交后,业务订单长时间处于处理状态。

影响范围

发现部分业务订单有问题,大部分业务订单正常。消除了在项目中设置统一时区的问题。

离线***

再现时间是早上,检测显示没有再现。非常诡异!!!

疑难解答问题

通过序列号的观察日志,发现是B系统存储在Mongodb中的时间字段,数据存在问题,如:创建时间为2022-05-01 14:24:10,然后系统存储为2022-05-01 02:24:10。因此,当系统B通过反转创建时间获得业务订单的最新记录时,它获得业务订单的第一个请求流。

服务器,mongodb节点

如果服务器时间有问题,联系运维童鞋,查看项目服务器各节点当前时间和mongodb各节点时间。结果正常,问题回到项目代码。

故障排除代码

代码历史悠久,最后一次迭代是通过记录创建时间逆序查询。最后,找到问题。

演示再现

@Testpublic void testTime() {Date now = new Date();SimpleDateFor***t sdf = new SimpleDateFor***t("yyyy-MM-dd hh:mm:ss");log.info("12小时制,时间:{}", sdf.for***t(now));sdf = new SimpleDateFor***t("yyyy-MM-dd HH:mm:ss");log.info("24小时制,时间:{}", sdf.for***t(now));}[2022-05-01 14:35:34.106] [***in] [INFO ] [com.xiu.boot.date.DateTest :26 ] 12小时制,时间:2022-05-01 02:35:34[2022-05-01 14:35:34.107] [***in] [INFO ] [com.xiu.boot.date.DateTest :28 ] 24小时制,时间:2022-05-01 14:35:34

紧急在线

修复bug,测试,重现(修改系统时间等操作)。最后,运营维护童鞋顺利发布系统,在线迭代修复。

事后恢复

1.在业务场景发生的概率下

多次编辑业务单,客户不取消业务单后,发现问题,在线迭代一段时间。

2.历史代码,新的需求场景

代码属于历史代码,新需求只是增加了一个排序,导致相应发展的童鞋坚持认为不是代码问题,影响了问题的导向。

3.问题导向不对。

首先位置是项目的时区设置,然后位置服务器时间不同步,最后是位置代码。

4.系统a的幂等处理结果优化。

幂等处理的异常结果不能忽略,直接报警处理。

本文来自倾心之夏投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/565084.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 05-27
下一篇 05-27

相关推荐

  • 2021年疫情快递停发日期 官方公布最新休假时间

    1月27日,国家邮政局下发通知,要求全系统、全行业统一思想认识,立足“保疫情防控”和“保基本民生”,认真科学研判春节期间本地区、本网络安全形势和寄递服务需求,准确组织做好春节期间寄递服务保障工作。→通知指出,要坚持“不打烊、不停网、不积压”主基调,合理安排春

    2023-07-25 23:48:01
    200 0
  • 2022年三伏天的起止时间日期

    2022年三伏天从7月16日开始算起,一直到8月24日结束,历时40天 初伏7月16日2021年7月25日,共10天 初伏第1天2022年7月16日 初伏第2天2022年7月17日 初伏第3天2022年7月18日 初伏第4天2022年7月19日 初伏第5天。7月16日今年的三伏天从7月16日开始,到8月24日结束2022年,三伏天

    2023-07-24 22:20:01
    663 0
  • sqlserver时间格式化 sqlserver日期格式转换

    5.1 c#日期格式# C很强大,很犀利,时间操作很武断,不像java那么细腻,时不时情绪化。参见示例。//获取当前日期 DateTime dateTime = DateTime.Now; Console.Write(dateTime); //格式化日期 var t1 = DateTime.Parse("2021年03月15"); Console.Write(t1); var t2 = DateTime

    2023-07-24 08:45:01
    1057 0
  • 苹果怎么查激活日期(怎样查苹果手机激活时间)

    通常我们入手一部新iPhone后,很多朋友都会有这样的顾虑,就是新入手的***会不会是翻新机?估计这是很多朋友都会担心害怕的地方。毕竟他们花了那么多钱,肯定不想买二手翻新机。如果你想查看新iPhone是不是翻新机,我们可以通过查看iPhone的激活时间来鉴别。那么iPhone如何检

    2023-07-22 09:50:01
    323 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信