10年JAVA,精通JAVA,熟悉前端技术栈,熟悉Python。熟悉JVM原理和调优,熟练使用Spring Boot、SpringCloud进行微服务开发。精通MySQL和Mybatis,擅长SQL调优及Redis、ES、RocketMQ等中间件应用。钻研能力强,乐于技术分享,阅读过SpringCloud、Mybatis等源码并发表在个人博客。
项目一:
● 项目介绍
1.合规系统是一个对商品进行反向屏蔽的系统,并控制用户的所见与所得以及对商户结算时的品进行屏蔽。
● 关键技术
1.Spring Boot、Spring Cloud、SchedulerX、RockentMQ、Redis、MySQL、MybatisFlex
● 个人角色
1.系统的主owner,负责系统的架构设计与开发,同时作为整个项目的owner,也负责协调整上下游系统的进度。
● 项目亮点:
1、通过本地消息表+重试机制保证数据最终一致性
原因:合规规则变更会触发商品团队的商品打标操作,这是个核心且耗时的操作,我们需要一套机制来保证规则的变更必定会正常的触发商品的打标操作
解决方案:本地消息表+重试机制
合规系统规则变更的同时需要插入本地消息表,定时任务扫描本地消息表中的记录并发送到MQ,如果发送失败就等待下次定时任务执行时再次发送MQ。商品中台消费消息后通过微服务接口通知合规系统变更消息表状态。
项目二:
● 项目介绍
1.培训中台是由商城系统、订单系统、课程管理系统、商品运营等系统组成的中台系统,主要包括集企业采购、个人购课、在线学习与阅读、学习信息统计、商品运营、订单管理等功能。
● 关键技术
1.Spring Boot、Spring Cloud、SchedulerX、RockentMQ、Redis、MySQL、Mybatis、LiteFlow
● 个人角色
1.系统的主owner,负责系统的架构设计与开发,同时作为整个项目的owner,也负责协调整上下游系统的进度。
● 遇到问题
1、企业培训商城首页加载慢,平均需要1秒左右;首页性能大幅提升,由1秒左右优化到100毫秒以下
原因:首页分为四部分,这四部分的内容由一个接口同步组装后返回给前端,同时也有两个接口响应慢,导致首页接口响应时间过长
解决方案:异步编程 + 缓存
1、同步改异步,将四部分内容(banner、推荐课程、免费好课、课程列表)由同步调用改为采用CompletableFuture来异步调用和组装
2、缓存关键数据,推荐课程和免费好课由CMS系统提供,这俩接口接口响应慢,又由于这俩接口内容变动频率很低,所有采用用Redis来缓存第一页的数据
2、分布式架构下订单与用户课程数据不一致
原因:企业培训订单系统在接受到支付的异步回调后更新订单状态,然后启动一个线程异步通知企业培训课程系统为用户分配课程,这个分配过程失败导致用户课程与订单状态不一致
方案:线程异步改为MQ的可靠消息最终一致性落地方案
1. 订单系统发送事务消息,保证消息可以正确的发送到MQ
2. 课程系统的绑课接口做幂等性改造,保证消费重复消息也不会导致系统和数据异常
3、开发难度大,需求开发跨多个部门和团队,第一次作为项目owner的倍感压力
原因:业务复杂,跨多个部门与团队,协调难度大,涉及到团队包括但不限于:三方供应商,供应链,商品,搜索,CMS,聚合订单,支付,结算等团队,以及各团队的前端与测试等等。
方案:
1. 详细分析需求,拉涉及团队的TL参会,明确各团队的任务;会后和各个TL或核心开发沟通细节,进而绘制出整体流程图和时序图,再次拉会分享技术方案,明确各团队的目标
2. 开发阶段,每日召开日会,保证各队员的进度正常;
3.对于开发或测试等反馈的跨团队问题,及时线下拉会沟通解决,做到事不过日
项目三:
● 项目介绍
1.企业福利系统是一个拥有支持实施对特定节日或行为创建特定祝福,再依据创建的祝福支持对员工发放资金或发送贺卡等能力的系统。
● 关键技术
1.Spring Boot、Spring Cloud、SchedulerX、RockentMQ、Redis、MySQL、Mybatis
● 个人角色
1.我是项目owner的角色,我除了自身的开发任务外,还负责另外一个同伴的任务分配与进度跟进。
● 遇到问题
1、新版祝福发放慢,导致新版祝福推广慢。
结果:优化后的发放效率大大提升,经过测试压测5000人的祝福基本可以3分钟内完成,新祝福的使用率也从原先的四五十家推广到90%的公会使用
原因:新版祝福设计复杂,总共五个定时任务,分别是:生成待发放数据、周期祝福增减人、福利发放、结果回查、祝福状态更新,每个任务定时2分钟执行一次,导致即使发放一个人也要10+分钟的执行时间
方案:
1. 精简定时任务,将原来5个定时任务调整为生成发放数据、福利发放、MQ + 结果回查并更新福利状态,正常情况下只需要执行两个定时任务+一个MQ即可,大大提升发放效率
项目四:
● 项目介绍
1.资金池是一个主要维护企业账户、员工账户,并在企业账户和个人账户的基础上,扩展出一系列行为的资金系统,比如资金发放、企业代付、个人的支付与退款等行为。
● 关键技术
1.Spring Boot、Spring Cloud、SchedulerX、RockentMQ、Redis、MySQL、Mybatis
● 个人角色
1.我是项目owner的角色,配属有两个中级JAVA,我除了个人开发任务外,还负责他们的任务分配与进度跟进。
● 遇到问题:
1、资金发放时存在大事务,导致发放时间太长。
原因:企业账户扣款和个人账户入账强关联,且放在一个事务中,当发放人数较多时会形成一个大事务
解决方案:
1. 企业账户扣款和个人账户入账通过MQ解耦,企业账号扣完立刻发送MQ消息,不再等待个人账户入账
2. 个人账户采用分段发放的方式来拆分事务,一次处理100个用户的入账操作,防止同时加载和处理大量用户数据到内存中。
2、核心功能之一的领取加班餐由于MySQL主从延迟过大导致用户多领加班餐
原因:数据写是在主库,用户是否可领读的是从库,当天由于DBA修改大表导致主从延迟过大,引起了主从数据不一致,所以用户可以领多次
解决方案:
1. 临时修改代码,将读从库改为读主库
2. 对用户多领的数据进行修复
3.减少调用链路,用户是否可领的判断由上游系统根据自己领取记录判断,而不是来访问资金系统
可兼职时间
可兼职地点
0条评论 雇主评价