实现网
Seikatsu

昵称登录后显示

600/8小时
5年工作经验

融智盛维科技有限公司
Java工程师

Java
Mysql
Redis
Spring Cloud

0

被预约次数

0

被收藏次数

0

被评价次数

擅长技能

一、分布式认证体系设计与实践​

技术场景:支撑日活近百万的电玩城小程序后端,需实现跨微服务无状态认证,保障高并发下的安全访问与水平扩展。​
技术方案:基于 Spring Security + JWT 构建分布式认证系统,替代传统 Session 模式。​
核心实现:​
设计 JWT 令牌结构,包含用户角色、权限信息及自定义业务字段(如门店 ID),通过 HTTP Header 传输,有效期 24 小时,配合 Refresh Token 实现无感续期,降低用户频繁登录成本;​
集成 Spring Security 过滤器链,实现令牌解析、签名校验及权限拦截,通过@PreAuthorize注解细粒度控制接口访问(如仅允许 "ADMIN" 角色操作人员管理系统);​
针对多端适配,设计小程序端独立认证流程:通过微信临时凭证换取 JWT,结合 Redis 黑名单机制(存储主动退出的无效令牌),提升移动端认证安全性;​
优化令牌管理:密钥通过 Apollo 配置中心动态更新,避免硬编码风险,支持集群环境下的认证服务无状态化。​
技术价值:​
支撑峰值 5000+ QPS 的认证请求,系统认证延迟稳定在 50ms 以内,有效降低微服务间会话同步开销;​
无状态设计使后端节点可弹性扩展,配合 Nginx 负载均衡,认证模块可用性达 99.99%。​
二、Redis 缓存架构优化与性能调优​
技术场景:高频查询场景(如抽奖奖品、会员权益)导致数据库压力剧增,需通过缓存降低 DB 访问频次。​
技术方案:构建多级缓存体系,结合 Redis 数据结构与布隆过滤器,实现热点数据高效读写。​
核心实现:​
高频数据缓存:针对日查询超 500 万次的抽奖奖品列表,采用 Redis Hash 存储单奖品详情(字段压缩存储,节省 30% 内存),List 存储热门奖品排序,结合 Lua 脚本实现原子性查询更新,减少网络 IO;​
缓存穿透防护:引入 Guava 布隆过滤器(误判率 0.01%),在查询奖品 ID 前校验存在性,无效请求拦截率达 99.8%,避免 DB 承受无效穿透攻击;​
缓存雪崩应对:通过 Spring Task 定时任务(每日凌晨 3 点)执行缓存预热,利用 Redisson 分布式锁确保单节点执行,批量加载 10 万 + 热点数据至 Redis,同时为不同数据设置随机过期时间(30min~2h),打散失效峰值;​
监控与调优:通过 Prometheus+Grafana 实时监控缓存命中率(从 65% 提升至 89%)、内存使用率(控制在 70% 以内),针对冷数据定期淘汰,释放内存空间 20% 以上。​
技术价值:​
数据库 QPS 从 2000 + 降至 200 以下,CPU 负载从 80% 降至 30%,核心接口响应时间从 800ms 优化至 150ms;​
布隆过滤器使 DB 无效查询减少 40 万次 / 天,显著提升数据库稳定性。​
三、分布式任务与锁机制实践​
技术场景:定时任务(如活动库存刷新、财务日结)在多节点部署时出现并发执行冲突,需确保任务单节点唯一性。​
技术方案:基于 Redisson 实现分布式锁,精准控制定时任务执行。​
核心实现:​
定义标准化锁 Key 格式(如task:refresh:activity_stock),结合 Redisson 的 RLock 实现可重入分布式锁,锁过期时间设置为任务预估耗时的 1.3 倍(防止任务未完成锁提前释放);​
采用 Lua 脚本实现原子化锁释放逻辑,避免因节点时钟不一致导致的误删锁问题;​
任务执行前增加锁等待超时机制(默认 10s),避免因锁竞争导致线程无限阻塞;​
典型案例:活动库存定时刷新任务通过锁机制避免多节点同时操作库存,数据更新错误率从 5% 降至 0.1% 以下,保障库存数据一致性。​
技术价值:​
实现定时任务的分布式协同,消除节点间任务执行冲突,关键任务成功率从 85% 提升至 99.9%;​
锁机制与任务调度解耦设计,支持后续新任务快速复用,研发效率提升 40%。​
四、事件驱动架构解耦复杂业务逻辑​
技术场景:营销活动新增 / 编辑时需联动会员、积分、消息推送等多个系统,传统同步调用导致模块耦合度高、响应慢。​
技术方案:基于 Spring Event 构建异步事件驱动架构,实现业务逻辑解耦。​
核心实现:​
定义领域事件ActivityUpdateEvent,封装活动 ID、状态变更时间、关联规则等上下文信息,通过ApplicationEventPublisher实现事件发布;​
设计多维度事件监听器(如MemberSystemListener、PointRuleListener、MessagePushListener),通过@Async注解实现异步处理,配合自定义线程池(核心线程数 10,队列容量 200)隔离不同业务处理资源;​
引入事件重试机制:对消息推送等非核心流程,通过 Spring Retry 配置 3 次重试(间隔 10s),保障最终一致性;​
优化成果:活动状态变更流程耗时从同步调用的 800ms 降至 150ms,系统吞吐量提升 5 倍,模块间依赖减少 40%,新增营销功能开发周期缩短 30%。​
技术价值:​
解耦后营销系统可独立迭代,事件监听器支持动态扩展(如后续新增 APP 推送渠道时无需修改核心逻辑);​
异步处理机制提升用户体验,活动创建接口响应时间从 500ms 降至 80ms,前端交互流畅度显著提升。​
五、高并发场景下的数据库优化​
技术场景:订单、支付等核心业务表数据量快速增长,单表查询性能下降明显。​
技术方案:分库分表结合读写分离,优化 SQL 执行效率。​
核心实现:​
订单表采用 "时间分片 + 门店 ID 哈希" 分库分表策略(按年分库,单库内按门店 ID 取模分表),单表数据量从千万级控制在 200 万以内,复杂查询响应时间从 3s 优化至 500ms;​
热点数据(如用户最近 10 笔订单)使用 Redis ZSet 存储订单 ID,按时间戳排序,查询时仅需从 Redis 获取 ID 列表,再批量查询数据库,减少 DB 排序压力;​
慢 SQL 治理:通过 MySQL Slow Query Log 定位优化点,索引命中率从 75% 提升至 95%,淘汰冗余索引 20+,释放磁盘空间 50GB+。​
技术价值:​
支撑日均 10 万 + 订单的写入与查询,数据库集群 CPU / 内存利用率稳定在 60% 以下;​
分表后事务控制复杂度降低,结合本地消息表实现支付 - 订单最终一致性,事务失败率控制在 0.01% 以内。​
技术总结与个人能力沉淀​
在该 SaaS 项目中,深度实践了分布式系统核心组件(认证、缓存、锁、事件驱动)的设计与落地,具备以下能力:​
架构设计能力:从 0 到 1 构建高并发微服务模块,平衡性能、可用性与可维护性;​
问题解决能力:针对缓存穿透 / 雪崩、分布式任务冲突等典型问题,提供完整技术方案并落地验证;​
工程化思维:注重监控、重试、降级等容错机制设计,保障系统稳定性;​
技术优化能力:通过数据驱动调优(如缓存命中率、SQL 执行计划分析),持续提升系统性能。​
未来可复用经验:分布式系统设计方法论、中间件选型与调优、复杂业务场景下的解耦与扩展。

项目经验

项目名称:saas
项目描述:saas是专注电玩城服务的集成多个微服务的项目,目前服务与大玩家总部。它集成了电商系统、人员管理系统、订单系统、财务系统、支付系统、营销系统、会员系统等等多个项目。几乎覆盖到电玩城所有内容。小程序日活量达到近百万。
技术栈:SpringBoot + Spring Security + MySQL + Redis + MyBatis + SpringEvent
核心职责:
1. 基于 SpringSecurity + JWT 实现了登录认证。
2. 使用Redis缓存经常查询的高频数据,例如:抽奖的奖品等,避免数据库访问压力过大。
3. 基于布隆过滤器避免缓存穿透,使用 SpringTask 定时任务实现缓存预热来避免缓存雪崩。
4. 使用Redis锁防止多个节点服务的SpringTask定时任务同时执行。
5. 使用SpringEvent把营销活动新增或编辑与活动状态变更逻辑进行解耦。

项目名称:土拉拉
项目描述:土拉拉项目是为建筑行业提供货拉服务, 土拉拉APP是集电子消费券,运输订单管理,运输费结算等服务为一体的“互联网+网络运输”平台,是为城市建筑工地、渣土车、司机、消纳场提供运输解决方案。平台的核心业务板块为渣土车运输、行业资讯、工程机械交易等。
技术栈:SpringBoot + MySQL + Redis + MyBatis + EasyExcel + Jpush
核心职责:
1. 使用EasyExcel实现车辆的导入导出,通过 MyBatis 批处理插入数据,基于任务表实现异步。
2. 整合Jpush极光推送,实现雇主发布推送给司机接单。
3. 使用token的方式解决雇主重复发布的幂等问题。
4. 基础Redis实现分布式锁的方式,实现司机抢单的并发问题。

0条评论 雇主评价

暂无评论~

可兼职时间

自由职业者,时间充裕

可兼职地点

湖北

被预约

0

被收藏

0

被评价

0

立即预约

可兼职时间

自由职业者,时间充裕

可兼职地点

湖北