移动网站源码,西安做网站公司8,深圳市官网网站建设哪家好,网站建设跳转页面怎么弄刚入职#xff0c;就踩大坑#xff0c;相信有很多朋友有我类似的经历。
5年前#xff0c;我入职一家在线教育公司#xff0c;新的公司福利非常好#xff0c;各种零食随便吃#xff0c;据说还能正点下班#xff0c;一切都超出我的期望#xff0c;“可算让我找着神仙公司…刚入职就踩大坑相信有很多朋友有我类似的经历。
5年前我入职一家在线教育公司新的公司福利非常好各种零食随便吃据说还能正点下班一切都超出我的期望“可算让我找着神仙公司了”我的心里一阵窃喜。
在熟悉环境之后我趁着上厕所的时候顺便去旁边的零食摊挑了点零食。接下来的一天里我专注地配置开发环境、阅读新人文档当然我也不忘兼顾手边的零食。
初出茅庐功败垂成
好景不长第三天上午刚到公司屁股还没坐热。新组长立刻给我安排了任务。他决定让我将配置端的课程搜索从使用现有的Lucene搜索切换到ElasticSearch搜索。这个任务并不算复杂然而我却办砸了。
先说为什么不复杂
ElasticSearch的搜索功能 基于Lucene工具库实现的两者在搜索请求构造方式上几乎一致在客户端使用上差异很小。 切换方案无需顾虑太多稳定性问题。由于是配置端课程搜索并非是用户端搜索所以平稳切换的压力较小、性能压力也比较小。
总的来说领导认为这个事情并不紧急重要性也不算高而且业务逻辑相对简单难度能够把握因此安排我去探索一下。可是我却犯了两个错误把入职的第一件事办砸了。现在回过头来看十分遗憾 难以解决的bug让我陷入困境
将搜索方式从Lucene切换为ElasticSearch后如何评估切换后搜索结果的准确度呢
除了通过不断地回归测试还有一个更好的方案。
我的方案是在调用搜索时同时并发调用Lucene搜索和ElasticSearch搜索。在汇总搜索结果时比对两者的搜索结果是否完全一致。如果在切换搜索引擎的过程中两个方案的搜索结果不一致就打印异常搜索条件和搜索结果并进行人工排查原因。 在实际切换过程中我经常遇到搜索数据不一致的情况这让我感到十分苦恼。我花了一周的时间编写代码然后又用了两周多的时间来排查问题这超出了预估的时间。在这个过程中我感到非常焦虑和沮丧。作为一个新来的员工我希望能够表现出色给领导留下好印象。然而事与愿违难以解决的bug让我陷入困境。
经过无数次的怀疑和尝试我终于找到了问题的根源。原来我忘记了添加排序方式。
因为存在很多课程数据所以配置端搜索需要分页搜索。在之前的Lucene搜索方式中我们使用课程Id来进行排序。然而在切换到新的ElasticSearch方案中时我忘记了添加排序方式。这个错误的后果是虽然整体上结果是一致的但由于新方案没有排序方式每一页的搜索结果是随机的无法预测所以与原方案的结果不一致。 新方案加上课程Id排序方式以后搜索结果和原方案一致。
为此我总结了分页查询的设计要点希望大家不要重复踩坑# 四选一如何选择适合你的分页方案
千万不要粗心大意
实际上在解决以上分页搜索没有添加排序方式的问题之后还存在着许多小问题。而这些小问题都反映了我的另一个不足粗心大意。
正是这些小问题导致线上环境总会出现个别搜索结果不一致的情况导致这项工作被拖延很久。
课程模型是在线教育公司非常核心的数据模型业务逻辑非常复杂当然字段也非常多。在我入职时该模型已经有120 个字段并且有近 50 个字段可以进行检索。
在切换搜索方式时我需要重新定义各种DO、DTO、Request等类型还需新增多个类并重新定义这些字段。在这个过程中我必须确保不遗漏任何字段也不能多加字段。当字段数量在20个以内时这项工作出错的可能性非常低。然而班课模型却有多达120个字段因此出错的风险极大。当时我需要大量搬运这些字段然而我只把这项工作看作是枯燥乏味的任务未能深刻意识到出错的可能性极大所以工作起来散漫随意没有特别仔细校验重构前后代码的准确性。
墨菲定律一件事可能出错时就一定会出错 墨菲定律是一种普遍被接受的观念指出如果某件事情可能出错那么它将以最不利的方式出错。这个定律起源于美国航天局的项目工程师爱德华·墨菲在1950年代发现了这一规律。 墨菲定律还强调了人类的倾向即将事情弄糟或让事情朝着最坏的方向发展。它提醒人们在计划和决策时要考虑可能出错的因素并准备应对不利的情况。 墨菲定律实在是太准了当你感觉某个事情可能会出错的时候那它真的就会出错。而且我犯错不止一次因为有120个字段很多字段的命名非常相似最终我遗漏了2个字段拼写错误了一个字段总共有三个字段出了问题。
不巧的是这三个字段也参与检索。当用户在课程搜索页面选择这三个字段来进行检索时因为字段的拼写错误和遗漏这三个字段没有被包含在检索条件中导致搜索结果出错……
导致这个问题的原因有很多其中包括字段数量太多我的工作不够细致做事粗心大意而且没有进行充分的测试……
为什么没有测试
小公司的测试人员相对较少尤其是在面对课程管理后台的技术重构需求时更加无法获取所需的测试资源
组长对我说“ 要人没有要测试更没有” 事情办砸了十分遗憾
首先从各个方面来看切换搜索引擎这件事的复杂度和难度是可控的而且目标也非常明确。作为入职后第一项任务我应该准确快速地完成它以留下一个良好印象。当然领导也期望我能够做到这一点然而事实与期望相去甚远。
虽然在线上环境没有出现问题但在上线后问题排查的时间却远远超出了预期让领导对结果不太满意。
总的来说从这件事中我获得的最重要教训就是对于可能出错的事情要保持警惕。时刻用墨菲定律提醒自己要仔细关注那些可能发生小概率错误的细节问题。
对于一些具有挑战性的工作我们通常都非常重视且在工作中也非常认真谨慎往往不会出错。
然而像大量搬运代码、搬运大量字段等这类乏味又枯燥的工作确实容易使人麻痹大意因此我们必须提高警惕。要么我们远离这些乏味的工作要么就要认真仔细地对待它们。
否则如果对这些乏味工作粗心大意墨菲定律一定会找上你让你在线上翻车