个人介绍
我在专科就读阶段的实习期,即2019年下半年进入河南牧原智能科技有限公司实习。实习期满转正后开始作为基层开发人员工作。后因学习能力较好,技术提升较快,约2年后升任高级开发工程师。截至目前,开发经验3年左右。从SSM架构的单体项目,到普通SpringBoot分布式,到SpringCloud微服务架构的项目都有涉及过。
目前工作强度不大,空闲时间较多,能力提升暂时到了瓶颈。因此想通过业余时间接触一些新的项目和需求来丰富经验、开阔眼界。
欢迎各位来提需求。
工作经历
2019-10-10 -2022-06-15牧原智能科技架构师
在该公司初期,本人主要作为基层开发人员。之后随着经验和技术提升,也开始负责部分方案设计、技术选型、代码审核、新员工培训等工作。
教育经历
2017-09-01 - 2020-06-30河南建筑职业技术学院软件技术专科
技能
之前在作为某大型互联网公司外包员工时参与的项目,仅实现了决策树相关的功能。考虑到工期、成本、理解与维护的复杂度等问题,没有使用第三方的决策树框架,而是自己设计了一款通过Mysql数据表查询所有相关规则条件,递归计算并判断的简单的决策树实现方案。 由于保密要求比较严,所以不能提供相应截图
本项目是基于SAAS商业模式开发的类似于美团外卖的在线点餐平台。技术栈与学易思在线学习平台高度接近。其中类似于权限控制、数据加密、日志处理、分库分表、异步通信、OSS对象存储等通用功能模块,均是我本人用同一套技术栈实现的,此处不再赘述。
该项目是基于SAAS商业模式开发的在线教育平台,最终交付对象为某教育科技股份有限公司。该公司旗下附属的多个教育机构需要将本机构内的课程、教师等相关信息上传至本平台。上传完毕后的课程经过该教育科技股份有限公司审核通过后,可以在本平台对外上架该课程。最后由消费者对上架的课程进行搜索、购买、学习、讨论。 项目整体采用SpringCloud+Alibaba的组件搭建,用RBAC模型+Gateway+SpringSecurity+JWT+OAuth2进行权限控制,Sentinel进行流量治理,Seata解决分布式事务,Redis作为缓存数据库和分布式锁实现方案,Dubbo进行远程调用与熔断降级,RabbitMQ作为消息中间件,使用ElasticSearch实现海量课程数据快速检索,使用阿里云和七牛云的云端存储平台保存项目日志及用户上传的文件,通过docker+k8s进行容器化部署。 本项目共分为如下功能模块:权限控制模块、数据字典维护模块、教育机构信息管理模块、课程相关的基础信息管理模块、课程审核模块、作业模块、评论模块、用户信息模块、订单模块、支付模块、日志模块、OSS对象存储模块。 其中本人负责除了支付模块以外所有模块的实现方案设计工作(包括技术选型、数据库表设计、实现方案),以及这些模块中部分复杂业务代码的编写。 其中涉及到的最复杂的难点接口为课程相关的基础信息管理模块中的课程上架接口。该接口业务场景为:当某教育机构的课程上传完毕,通过该教育科技股份有限公司的审核后,通过该接口将课程信息发布到该平台上,从而使该课程信息可以被消费者搜索到并进行后续操作。业务要求为:上架的操作必须最终成功。且用户点击前端的按钮后即时响应。 最终我给出的实现方案核心是围绕RabbitMQ设计的:本身mq的异步通信就可以提升响应速度,我们只需要确保消息一定发送成功、一定不丢失、一定被消费到、避免重复消费即可满足该接口所有的业务需求。具体设计方案为:定时任务扫描Mysql数据,找到发送失败的消息,重新发送。开启消费失败重试机制增加失败容错;惰性队列确保消息不丢失;标记法避免消息重复消费;死信队列作为最终保险,存储重试失败次数过多的消息,将该课程的上架操作转交给人工客服处理。