• 熟练掌握 Java 核心知识,具有良好的编程编程规范和面向对象的编程思想。
• 熟练掌握 Java 设计模式,善用设计原则构建可复用代码。
• 深入学习 Spring 核心流程模块,如IOC、AOP、依赖倒置等。
• 熟练使用常见的ORM框架进行开发,包括Mybatis、Mybatis Plus。
• 熟练掌握 MySql,具备一定的 SQL 调优能力。
• 深入理解 Redis 线程模型,熟练掌握 Redis 的核心数据结构的使用场景,熟悉各种缓存高并发的使用场景,比如缓存雪崩,缓存穿透等。
• 熟悉 RabbitMQ、 Kafka 等常用的消息中间件进行消息的异步数据处理。
• 熟练使用版本控制工具(如Git)管理代码版本。
• 了解分布式搜索引擎 ElasticSearch。
• 了解能够熟练使用Vue进行基本前端页面的开发。
项目名称:营销活动平台 - Lottery 微服务抽奖系统
系统架构:以 DDD 领域驱动设计开发,微服务拆分的分布式系统架构
核心技术:SpringBoot、MyBatis、Dubbo、MQ、MySQL、XDB-Router、Redis、xxl-job
项目描述 抽奖系统是营销平台的重要微服务之一,可以满足 C 端人群的需求,例如拉新、促活、留存等。该系统运用抽象、分治和 DDD 知识,拆解服务边界,凝练领域服务功能。围绕抽奖服务建设领域服务,包括规则引擎、抽奖策略、活动玩法、奖品发放等。这可以满足业务产品快速迭代上线的需求,同时减少研发成本,提高交付效率。
主要职责:
• 构建以 DDD 分层结构的处理方式,搭建整个抽奖系统架构。
• 运用设计原则和工厂、组合、策略、模板方法等设计模式的综合使用,定义抽奖过程标准和实现对应的多类型抽奖的服务模块,搭建和开发方便维护和易于迭代的系统工程。
• 因活动秒杀的并发场景,将秒杀从最开始的数据库行级锁优化为Redis Key加锁,又从 Redis Key 的独占锁,优化为滑块锁。优化后整体秒杀有了非常可观的性能提升。
• 解耦抽奖流程,把抽奖和发奖用MQ消息串联起来,避免一个流程太长,导致用户一直等待。
• 鉴于系统内有较多的规则策略过滤,包括准入、人群、风控、A/BTest等需求,为适应系统规模可快速开发和使用的方式,搭建了去中心化的量化人群规则引擎组件。通过业务需求对逻辑的扩展和内置引擎执行器的使用,完成自由组合的人群过滤服务。这降低了共性功能重复开发所带来的成本问题,并提高了研发效率。