求职意向
golang开发工程师 上海 薪资面议 随时到岗
教育背景
2020.x -2020x 锤子简历大学 软件工程专业
算法设计与分析、图形图像处理、计算机网络等课程
2020.x -2020x 锤子简历大学 软件工程专业
数据结构、操作系统、计算机组成原理等课程。
工作经验
2020.x -2020x 锤子简历信息技术有限公司 Golang开发工程师
主要产品有: DHR、SSC两个产品,面向b端。
目前服务使用docker swarm,
技术栈使用前leader写的一个自有框架,支持grpc和http同时调用,本人对Grpc比较熟悉。
公司两个项目组合并,现在在转Java开发,使用springBoot进行开发。
2020.x -2020x ezbuy Golang开发工程师
技术研发部下ERP小组;
公司自研微服务框架:grpc+protobuffer+gateway+consul+disque+jaeger。
框架集成http和grpc,对开发友好,我们只需在各自微服务内进行开发即可,开发好的接口即可提供前后端调用。
履约段主要微服务:订单管理系统(oms)、采购下单系统(eltreum)、验货入库系统(garencieres)、打包封箱系统(chaplin)等
项目经验
2020.x -2020x e成科技 后端开发
1. 负责员工离职相关开发,主导和前端、测试、产品一起交互,推动这块业务需求开发上线。
2. 独立负责对接三方服务,go服务对接java测评产品中心。
使用go-kit 作为框架,对外提供http服务供DHR调用和小程序调用,现在这个服务又接入我们这边的画像测评中心,期间自己写了一个curl包。
3. 参与公司咨询bot开发,咨询bot是一个交互过程。 将用户的咨询问题传递给算法端识别,返回相应槽位,根据槽位调用底层DHR接口返回相应回答,这个项目已经上线。
4. 负责java项目,团队详情九宫格相关需求开发,根据团队中的每个人答题情况,汇总数据,按照产品给出的九宫格规则,生成团队中每个人的九宫格位置、发展建议等信息。
2020.x -2020x ezbuy后端开发 后端开发
1. 差额补齐与退单
背景:对原有的差额补齐和退单操作进行重构,原先逻辑差额补齐和退单都是直接依赖中台的接口,这样所有的差额补齐、退单的数据都在中台维护,需要转移到履约系统来统一维护。
项目描述:
1. 在oms统一和中台交互差额补齐、退单的逻辑。
2. oms通过disque的pub、sub模式来和eltreum、garencieres交互。eltreum、garencieres中再调用oms的差额补齐、退单接口。
3. 在oms保存订单的全量数据状态。
4. 使用github.com/looplab/fsm有限状态机来维护订单的各项状态变化,是一种事件回调机制。
使用到的技术:
1. 使用disque的pub、sub模式发送接收消息。
2. 使用有限状态机,控制:事件发生前->状态变化->事件发生后,通过callback回调handler。
3.了解到分布式一致性问题,例如:调用中台接口失败后无法回滚本地数据库:因为在创建差额补齐单的时候,网络原因会导致调用中台接口失败,无法回滚本地已经创建的数据库记录。后来使用了定时任务自动清理数据库中的脏数据。
2. 多国家站订单数据接入oms系统
背景:公司新开澳大利亚国际站点,新站点使用Java作为后端,产生的Java订单数据需要接入履约系统。所以履约系统需要向Java提供接口接入订单数据,以及及时推送订单在旅游的状态信息到Java。
项目描述:
1. 在oms下 client service 里提供接口: rpc GlobalGenOrder(GlobalGenOrderReq) 。
2. 使用框架中middleware进行 token certification 、判断请求路径是否合法。
3. 使用crontab定时任务将订单打包好的包裹数据(chaplin服务)同步到oms服务.
4. 在oms系统的状态机里通过走http POST请求 回传订单状态到Java端。
使用的技术:
1. 使用sync.Pool对象池,能够复用对象->减少GC开销。
2. 使用token机制来对http请求进行认证,同时使用了middleware机制。
3. 深入理解了我们的框架是如何将http请求转换成grpc请求的。
3. 中台未付款订单接入oms
背景:很多顾客下完单但是没付款,公司客服(客服系统建立在oms之上)需要查看到这部分订单的数据信息,而这部分未付款的订单信息保存在中台oms没有,所以需要接入这部分数据,但又不对现有数据和逻辑造成影响。
项目描述:
1. 中台那边将原本过滤掉的未付款订单数据往disque消息队列中推,并重新约定好消息格式与消息队列名称。
2. 读取disque中消息并解析,使用框架中的协程池(workerpool)对读取的消息进行并发处理。
3. 使用sync.Map过滤重复的jobId,防止读取到重复的job。
4. 通过defer对出错的消息重新入队列,重新消费。
使用到的技术:
1. 使用disque,了解异步消息队列的生产、消费过程。
2. 使用Go的协程池并发处理任务,深刻了解协程池的工作原理,以及深刻理解项目框架中封装的 ctx.GoDump()坑,不支持并发使用。
3. 使用sync.Map并发map,解决重复jobId(原因在中台那边会把相同的jobId重复往消息队列中扔)。
自我评价
我的特点:Go基础知识扎实,热爱学习,善于思考。具有独立解决问题的能力,注重代码质量,代码简洁明了,目标是写出高质量的代码,同时对项目框架也有自己的理解
内容来源说明:本文章来自网络收集,如侵犯了你的权益,请联系QQ:2772182309进行删除。