• 熟练掌握 Java 编程语言,对 Java 虚拟机有一定了解
• 熟悉 Java web 的基本知识以及 Spring 框架的使用
• 了解常见数据结构与算法,了解常用数据库,熟悉 Redis
• 对 linux 系统有一定了解,掌握常用的 shell 命令
• 了解常见的设计模式,如责任链模式,适配器模式等,熟悉 Http 协议
• 了解常用的rpc中间件,了解简单的分布式知识
• 大学英语四级(CET-4),能够基本阅读英文资料
• 活动会场搭建
项目需求:为了应对双十二,618以及平时拉新促活的一系列活动,方便运营能够快速的搭建活动会场,需要针对不同类型的会场设置统一的搭建平台。此系统在上线后陆续支持了口碑的双十二和618大促活动以及大牌甄选频道页的搭建,后续会陆续支持口碑和饿了么各个活动页面以及频道页面
工作贡献:
1.负责搭建平台主要的用户端开发工作,主要.负责业务系统内部日志 的统一化,通过SpringAOP和拦截器实现各个模块的分场景监控
2.主要设计了搭建平台的存储模型以及跟前端对接的协议字段,使得 运营只需要在模板进行部分通用的配置即可实现一个活动页面
3.负责整个系统的缓存设计,通过精卫(canal)失效缓存达到缓存与 mysql之间的解耦合,保证整个系统的性能
4.负责对外部的统一接口,内部采用责任链和版本号的双重机制选取 对应的处理器,内部提供默认的处理器,部分扩展节点,以及可实现 的外部spi接口来达到可扩展的机制。其他内部系统可通过实现spi的 方法接入搭建平台。
5.负责系统的稳定性工作,包括针对各个会场下的组件或者会场页进 行分场景的限流,运营上线活动后的审批机制与白名单机制。活动上 线后的降级预案等稳定性保障
6.根据groovy脚本热加载机制以及drm的实时推送实现组件的可插拔 化,使得不需要发布代码即可使用脚本做一些应急处理或者降级处理
• 人传人活动
项目需求:为了应对业务拉新促活的需求,需要实现一个人传人的分享活动,主要流程为A用户可以分享一个链接给好友,B用户点击此链接,此时A与B会创建人传人关系,当B完成登录或者购买商品等操作后,会给A用户发放人头奖励。
工作贡献:
1.实现了口碑内部人传人发奖的系统,主要负责人与人关系的双向存储,关系状态的扭转,接受分享者完成任务消息后的幂等控制,定时识别关系过期等操作。
2.由于口碑人传人需要进行外部分享,涉及到uid的外泄,所以在构造分享链接时需要对用户uid进行加解密.为了保证性能,采取了AES对称加密算法
• 券码抽发奖
项目需求:为了应对外部商户进行口碑抽发奖的操作,运营希望用户输入券码即可进行抽发奖操作。此业务类似于短链服务,用户输入短码即可进行抽奖操作,隐蔽掉对应的抽发奖id。
工作贡献:
1.负责整个系统的设计工作,包括存储结构的设计,分为券码表以及券码配置表,运营可创建券码配置,并且生成券码,生产的券码在写入券码表之后也会同时dump到引擎(类似tisplus),便于之后对券码的搜索操作
2.在生成券码时统一采取MD5算法和BASE62生成,在插入券码表示采取分批插入的方式,对每一批创建一个任务,然后采取任务分发的方式进行任务调度,通过实时上报的方式统计任务进度,最大程度的利用机器性能。
3.在用户领奖时,需要保证券码状态和奖品库存的一致性。我们采取的方案是牺牲部分可用性,当调用抽发奖rpc超时之后,会进行中间状态,然后等待抽发奖发送的消息,根据消息记录中的状态判断发奖是否成功。如果消息一直不来,处于中间状态的话,会有全量核对,核对券码状态与抽发奖记录的状态是否一直,此时需要人工介入。
• 卡券包业务
项目需求:需要能够使用户能够在本地生活的卡券包里能够看见饿了么券,淘宝券以及支付宝vcc券等多种类型的券。需要支持券列表,券详情,券使用须知,适用商品和适用门店的查询。
工作贡献:
1.负责整个卡券系统券列表的查询工作,由于卡券写入的量级比较大,又是采用mysql存储,所以必然采取分库分表的方式进行存储。券列表的查询条件又比较复杂,还需要分页。所以经过调研之后。我采取了搜索引擎(es)来进行券列表的查询(T+1天全量+实时增量 dump)。能够支持各种方式的券列表查询,包括根据uid,根据状态等
2.负责卡券系统部分的写入工作,包括vcc券以及饿了么券的写入。由于写入的量级大,并且第三方券自己的唯一id不能保证完全不重复,所以系统内部需要一套唯一id的体系。一开始我们选取了时间戳+版本号+预留位+随机数+分库分表位。后来经过调研了sequence
4.由于卡券数量过大,所以我们规定对超过有效期90天的数据进行清理,并且存入hbase。所以我负责实现了定时任务定时清理的方案。
5.由于接入的外部应用较多,所以我负责实现了一层统一接入层,专门处理幂等相关问题,在应用接入之前根据用户第三方id+用户域+第三方券id+实例域+消息id来标识一条记录,通过流水的状态来判断接不接受此条消息
6.在更新时由于需要先查询实例,判断实例存不存在,然后再更新实例。这个步骤需要加锁,我们现在的方案比较简单,直接加行锁,这块可以优化成为缓存锁(或者更高可靠性的内部的分布式锁)
7.双写方案:由于口碑拥有两
需要能够使用户能够在本地生活的卡券包里能够看见饿了么券,淘宝券以及支付宝vcc券等多种类型的券。需要支持券列表,券详情,券使用须知,适用商品和适用门店的查询。 负责卡券系统部分的写入工作,包括vcc券以及饿了么券的写入。由于写入的量级大,并且第三方券自己的唯一id不能保证完
为了应对外部商户进行口碑抽发奖的操作,运营希望用户输入券码即可进行抽发奖操作。此业务类似于短链服务,用户输入短码即可进行抽奖操作,隐蔽掉对应的抽发奖id。 负责整个系统的设计工作,包括存储结构的设计,分为券码表以及券码配置表,运营可创建券码配置,并且生成券码,生产的券码在写