1028 工作周记录-记一次成长

以前在学校的时候老是在想学编程的,以后工作中到底是在做些什么?

这次工作中的这个任务,也是有别于之前的任务,在我看来很特别。

在一个项目中,并不是说所有功能都是自己系统实现的。也并非所有的数据都源自自己的数据库。比方说一个涉及到支付功能的系统,会去调用微信支付、支付宝支付、银联支付,而不需要自己去实现一个支付功能,实现了也没什么人敢去使用吧。又比方说,数据源,比如路况信息,主要信息可以来自工作人员的录入,但是也可以来自第三方。像一个路况直播的程序,数据源可以源自工作人员的手动录入,也可以源自高德路况的推送。

而这次想记录的,就是关于数据源获取的问题。是这样的,我们的一个路况信息的系统,作为补充数据,会从第三方那边去获取数据,获取到数据后,再由工作人员在后台进行甄别,通过筛选的信息才会被录入到我们的数据库表里。通过筛选的数据,再后续路况进展有更新时,也会在存放我们认可的数据的表中去更新相应的状态。

因此,我们这边跟对方系统的交互,需要通过一种方式去获取对方提供的数据。

之前的实现方式,是对方提供接口,我们通过一个定时器程序,定时去调对方接口,如此来获取数据。但是,经过近几个月的业主的反馈,说总是会漏掉一些数据,即通过我们系统的一些数据没有及时被更新(少部分数据在两边系统的状态是不一致的),直观的表现是一个事件明明已经结束了,但是在我们的系统上看到的却是处于进行中。(这里就不去说为什么会漏数据了,不知道对方是怎么获取数据的,以及数据库的相关情况,总之就存在着推送数据时漏掉一些数据)

由于上面问题的存在,我们采用换一种方式去获取。改为我方提供接口,对方数据一有变动,就调我们的接口把相关信息推送给我们。这样一来,就不会出现数据漏传的问题。

然后接下来要讲的,才是我想记录的。
这个定时程序,是在刚入职没多久的时候写的,当时项目经理跟我说了需求,要调什么接口,要记录那些字段,画了个流程图,然后就让我去实现了。除此之外,我对系统模块没有任何认知。也不知道提供数据那一方跟我方的关系是什么,也不知道为什么要去取这个数据,也不知道这个数据拿到之后有什么用。也就按照要求去实现了。然后就按照要求把功能给实现了。

然后这个功能就一直放着。直到最近业主一直反馈这个问题。然后才决定来改进这个功能。冥冥中注定让要给我一次锻炼:项目经理刚好在这个时间离职;跟进这个项目的需求她不懂技术,因此也不知道各个模块间的调用;业主要求能支持图片的传送。感觉,担子一下子压在我身上。

这个系统模块之前一直都是项目经理在跟对方的人在打交道,而我只负责其中这个小小的功能的实现。现在只能让我和需求一起跟对方对接了。也是在这个过程中,跟需求的沟通中,跟对方的沟通中,才慢慢知道整个模块是怎样:我们系统本身就有一部分数据,另外一部分数据是从第三方获取,获取之后,再用工作人员登录到后台系统上进行筛选,筛选通过的数据方可作为我们认可的数据。然后这些数据才能显示到公众号上,而用户通过微信公众号,可以看到最新的路况信息。

也是通过这次,对这个系统模块有了一个清晰的了解。之前写定时程序的时候,每隔一段时间,项目经理让我排查日志找问题的时候,我都得花点时间把代码重新过一遍,去理解自己写的逻辑。而经过这次,对整个流程有了一定的了解之后,再来看我负责的那个功能的逻辑,就很好理解了。

另外这次的改进,业主要求要把图片资源也推送过来。
由于是我方提供接口,于是对方对接人问我打算用什么方式去处理图片。因为没有项目经理,所以问题就只能自己来解决了。我先问了我大佬的意见,他让我自己思考,自己看看用哪种方式好。我想到了另一个功能模块发送图片的方式——通过Base64对图片文件进行编码处理,然后通过接口发送。于是就说了我的想法,他说可以。
紧接着他又说,但是不是还存在着更好的方法呢?他问我为什么我们要存储图片,我说当然是因为我们前端需要展示。他说对于前端展示来说,需要的是一个图片的链接,那我们是否可以直接去访问对方服务器上的图片资源呢?我恍然大悟,确实如此,我之所以想要去接收图片,就是为了展示,如果能直接访问对方服务器上的图片,那就不需要把图片资源传过来了,还省了很多额外的处理。
但是大佬又继续说能这么做的前提是什么。嗯,前提是可以通过外网直接访问对方服务器。
于是跟对方确认了,得到的反馈是对方服务器无法直接用外网访问。(我们两台服务器是处于同一内网段)
于是就跟对方确认了说用Base64编码处理图片资源来发送。
之后我在想,我还得去处理图片文件的命名,以及要怎么定义接口,才能尽可能的避免让对方传送我方已有的图片,以及我要怎么去存储数据,才能让提供给前端展示的接口调用时不用去做前缀的转换。
然后在跟其他同事的讨论中,发现了还有更快的传输方式,即通过scp定时去同步图片,具体还有多种方式,一种是定时同步目录,另一种是同步指定的图片。
于是又问对方是否可以提供一个账号给我们去使用scp指令去同步图片,只需要传图片地址给我们即可。使用这种方式,就不用像直接传图片资源那样麻烦,还得转码,再写入到本地文件。
在实现的过程中,我又发现现在的实现方式是有缺陷的,现在的程序是只传最新的一次的图片地址,但假如我们其中一方服务器挂掉了一段时间,那么这段时间的数据我们就丢失了,当程序恢复之后,,由于传的只是最新的图片,该事件中先前传过的图片不会再传。而我并没有考虑到此情况,如果真的这样实现了,那么用户在公众号上,可能就会看到一些图片显示是空白的,或者显示404资源不存在的情况。于是又跟对方提了改进的地方,又改进了些接口数据。
再扩展思考后,又跟对方提了一个需求,得提供一个接口:把过去一段时间的数据推过来。这样在任何一方程序挂掉之后,可以把丢失的数据补回。

这次的对接,感觉到前所未有的享受。第一次站在项目经理的角度的处理问题,比如跟对方的沟通,比如在搞懂整个模块后再去看子功能,比如对图片资源的获取的多种方式的选择,比如程序意外挂掉时丢失数据的怎么补回。
要是项目经理在的话,可能这些事情都由他默默的完成了。而我要做的,仅仅是把功能给实现,很多东西也就接触不到了。

这一次,这个过程很有挑战,但更多的享受,哈哈!!于我而言,这次是一次成长,也是一次蜕变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值