留用自评-美团优选

@[TOC]

1、项目/工作及成果

1.1 干线异常修复- 逆向商品确认运单找不到

<1>【背景】

当司机没有进行中的逆向运单时,会根据请求参数创建一个排线请求对象,将刚创建的运单写入主库,然而原有的强走主库获取运单的逻辑被修改,读取走了从库,就会读取不出来,报空指针异常

<2>【问题困难及解决方案】

该开始上手时,对于业务流程不熟悉,需要mentor指导寻找需要更改的接口;此外,针对该异常,自己提出了两种解决方案,分别为使用带参的构造函数新建一个WaybillInfo对象和使用重试机制,但是没有考虑到代码的扩展性与健壮性,这两种方案也被否决了。经过商讨,对于这种由主从延迟导致的异常,可以通过强制走主库的方式解决

  • ① 对取运单的逻辑进行优化。从代码逻辑上看,完全没有必要写入完就读取运单信息,可以根据driverCode获取运单信息
  • ② 支持根据司机Code强制走主,查询该司机正在进行中的逆向运单

<3>【工作结果】

经过开发、自测后上线,线上观察到流量和数据均正常,成功解决该问题

<4>【收获】

在业务方面,对于业务流程进行梳理,有了更详细的了解,同时也输出了仓网运输的学习文档。在技术方面,提出的技术方案需要经过评审,因为解决问题不仅仅是解决自己遇到的问题,更要注意对其他业务侧的影响,对之后业务扩展开发的影响。

1.2 干线异常修复-配送单找不到

<1>【背景】

当配送完成时,第一次点击确认,配送单正常签收,重复点击时,取出的配送单为空,会抛出异常“没有查到配送单,请联系工作人员”,但此时该配送单已经在第一次点击的时候已经签收了,是可以取出配送单的

<2>【问题困难及解决方案】

这个异常可以说算是一个“顽疾”,很不容易排查。在新建一个QueryDeliveryOrderRequest对象时,confirmStatus字段设置为0,第一次查询时,经过映射后其值还是0,可以正常查出并修改为1;当第二次查询时,该字段会和运单号一起联查,发现该状态不是0,所以会查不出结果。找出原因后,按照下面的两个逻辑对该异常进行治理

  • ① 对取运单的逻辑进行优化。根据配送单号查询,不再加额外状态判断,查询到单据类型已签收返回business_error,查不到配送单再返回business_critical_error
  • ② 将QueryDeliveryOrderRequest对象的confirmStatus字段赋值为-1,避免无关字段在数据库查询时造成影响。经过层层调用,使用NumberUtil.wrapQueryNumber()这个工具类,将其设置为null,这样,查询数据库的时候,仅仅使用了配送单单号这一个字段进行查询

<3>【工作结果】

经过开发、自测后上线,线上观察到流量和数据均正常,成功解决该问题

<4>【收获】

定位异常原因时需要仔细分析,不要想当然。学会了使用远程debug查看哪里发生错误,这不仅有利于自己的学习,还能够提高完成任务的效率。

1.3 干线异常修复-经纬度相同或不在中国

<1>【背景】

由于历史原因,线上测试数据中的点评实验室的经纬度不在中国范围内,致使地图上计算的距离为0,会产生线上报警

<2>【问题困难及解决方案】

这个异常是由于历史数据的经纬度不正确,需要前后端联合解决,我负责tes侧处理,在抛出此异常后,为了能够区分出是谁抛出的异常,提出了用额外的字段进一步判断(获取城市ID),

  • ① 针对“收发货地址是点评实验室”这种异常,捕获并忽略
  • ② 针对“收发货地址不是点评实验室”这种异常,需要我们正常抛出异常。

<3>【工作结果】

经过开发、自测后上线,线上观察到流量和数据均正常,成功解决该问题

<4>【收获】

代码的规范性与可读性是写健壮代码的必要条件,此外,在写代码的时候要判是否为空,否则会引出新的异常,得不偿失。

1.4 牧羊人自定义组件优化

<1>【背景

前端经过HTTP传递到自定义组件的参数有问题时,组件会抛出异常,当调用量很大时,就会出现很多异常,因此,需要对该组件优化,减少异常告警

<2>【问题困难及解决方案

为了不影响下游,同时让下游可以感知到是什么原因导致的异常,首先去掉之前抛异常的操作,然后是新建一个类TmsDriverReponse,包含了code、message,在Tracer中添加key值loginTmsDriverResponse的键值对,记录异常信息

  • ① 当出现异常时,塞进错误码、错误信息,排查问题时,可以根据traceID定位到是哪个位置出错导致的异常。
  • ② 当没出现异常时,可以沿用之前的旧逻辑

<3>【工作结果

开发完成,测试中

<4>【收获

相比于业务需求,技术优化需要的是大胆的想法,想出多种方案,探讨后找出最优的。此外,在开发工程中学到了许多中间件,如牧羊人、Mthrift、Octo等,提升了自己。

1.5 图片导出与发运时间导出

<1>【背景

配合视觉团队的工作,导出运单及每个车型照片的链接地址和发运时间

<2>【问题困难及解决方案

这是刚进公司时做的一个任务,难度不大,就是使用数据库查询出相应的结果,但是,由于刚入职,对于数据库中字段代表的含义不了解,同时也有许多相似字段或废弃字段给自己带来了困扰,不过,最后在coco姐的帮助下顺利解决。

<3>【工作结果

顺利导出并交付

<4>【收获

对业务流程进行了系统梳理并输出了学习文档,对部门的业务有了详细的了解,提高了自己的sql水平。

2、项目/工作中收获

实习期间,感受到了周围同事的谦逊与知识的渊博,这种友好又融洽的工作氛围激励着我,从第一周的熟悉业务到后期的参与开发并上线,再到各种技术知识的学习,极大地提升了自己。

2.1 技术提升

① 使用魔数平台从数据库中提取数据,既提升了自己的SQL能力,又了解仓网运输的表中各字段的含义,对我们组业务有了新的理解。

② 在实际项目开发中,熟悉了解并使用公司常用中间件(MCC、Plus、Mafka、MTThrift)的使用,提升远程rpc之间调用原理和应用能力,提升消息队列应用能力。

③ 学会了使用Raptor、MTrace、Logcenter以及日志文件定位错误;通过泳道测试环境Cargo,使用Postaman、HTTP链接或结合Mafka平台进行远程debug,进一步提高了问题排查的效率。

④ 学习了新接口开发、接入Shepherd、测试、发布的流程,参与了对组件的技术优化,提升了对牧羊人的认知。

⑤ 参与开发的完整流程,从技术方案评审、到开发、用Spock语法写单测、自测、CR,再到上线以及上线后流量观察,提升了自己的工程能力。

⑥ 学习了微服务框架SpringBoot以及Mybatis,对于AOP、注解、IOC有了更具体的认识

⑦ 熟练使用IDEA,提高了用Git、Maven协作开发能力;此外,更加注重代码的规范性与健壮性

2.2 业务提升

① 通过技术文档的学习与上手实操,学习并梳理了我们组负责的仓网运输业务,了解tes,tws,trunkline,bapi系统负责的主要内容,对接口相互调用有了清晰的理解。此外,对业务中各种表单(如调拨单、运单、装车单、配送单等)的作用、依赖关系和流转过程进行了梳理,极大提升了对业务流程的理解。

② 规范化开发流程,针对每个需求,要写技术文档,与其他RD一起评审;开发完成后,需要单元测试、自测、CR、联调等;此外,要制定排期,并按照计划执行。

③ 积极参加分享交流会议并参加培训考试,查漏补缺,输出自己的学习笔记,记录重点、难点、要点,提升了自己的业务能力和技术能力。

2.3 个人提升

① 通过参与完整的开发流程,有了严谨的工作态度,从技术方案评审,再到排期,开发,测试,联调,上线,需要我们严格遵守公司的规范来进行。

② 对于Java知识有了更深刻的学习,包括工具类、重试机制、范型、微服务框架SpringBoot等等,提升了自己的技术水平。

③ 提高了自己的沟通与表达能力,不仅要敢于向同事请教,敢于表达自己的诉求,也要让自己的表述更加清晰易懂。

3、未来发展规划

3.1 短期规划

① 绘制业务流程图,帮助自己深刻理解业务场景、业务流程,提升业务能力。

② 多阅读优秀代码以及学习文档中的编码风格,加强对代码整洁性、规范性学习,养成良好的代码习惯。

③ 能够独立跟进业务需求,完成开发。

3.2 长期规划

① 进一步熟悉业务,熟悉业务各流程中涉及的上下游业务接口,逐步形成完整的业务端到端闭环。

② 持续学习,注重知识学习的深度。对技术的学习不能停留在表面的了解和使用,对其底层的实现原理也要有学习和一定的理解。

③ 加深对开发框架和各种中间件的理解和使用,进一步掌握业务常用开源工具、内部工具的使用方法,提高自己的开发能力。

④ 积极了解团队重点业务以及发展方向,为团队建设做出贡献。

4、其他补充

很感谢这段时间峰哥、coco姐、晟哥以及组内其他同事的帮助,大家学识渊博又谦虚可爱,诲人不倦,给了我很深的触动,这将是一段宝贵的经历停留在我的脑海中,很感谢实习期间大家对我的帮助和照顾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还能坚持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值