高并发实时竞价拍卖系统(天天拍车)
职位:架构师
项目概述:天天拍车核心的二手车实时在线竞价平台,支撑平台90%以上的成交额。系统需在万级车商并发、车辆秒级价格波动的场景下,保证出价、排序、通知的强一致性与极低延迟。设计目标为:出价延迟
<100ms、通知延迟<200ms、系统可用性99.99%,成功应对日均数百场拍卖、峰值并发10万+连接的挑战。< /p>
技术栈:Java (SpringBoot/Netty), Redis (Cluster + Lua), RocketMQ, Zookeeper, MySQL, Nginx,
Protobuf, Prometheus, Grafana, Docker
核心职责与成果:
- 高可用、可水平扩展的竞价架构设计:
a. 主导设计基于Netty的分布式长连接网关集群,采用主从Reactor线程模型,单机支撑数万TCP/WebSocket连接。通过优化Linux内核参数(somaxconn,
tcp_tw_reuse)与Netty高低水位线,解决海量连接下的资源耗尽与GC压力,连接稳定性提升至99.95%。
b.
创新性设计“车辆-服务器”路由注册中心:基于Zookeeper开发轻量级NameServer,动态感知Netty服务器节点负载(CPU、内存、连接数),为车商进入拍卖间提供最优服务器路由策略,从根源上避免单点过热,实现集群负载均衡。
- 强一致性竞价与实时排序引擎:
a. 设计并实现基于Redis
Lua原子脚本的强一致性出价引擎。将出价金额比较、最高价更新、Top10排行榜(ZSet结构)维护等核心逻辑封装为原子操作,彻底杜绝超卖与数据竞争,保障竞价公平性,出价成功率达100%。
b.
引入本地缓存+Redis缓存的二级校验机制:在业务服务器层缓存车辆最高价,对低于此价格的出价请求快速拦截,将无效请求阻挡在Redis之前,降低60%以上的Redis访问压力,核心出价链路平均RT控制在75ms以内。
- 高性能、低延迟的实时通知系统:
a.
采用“发布-订阅”与“精准路由”结合的混合推送模式:车辆价格变动事件通过RocketMQ进行主题广播,实现系统解耦。Netty网关集群根据从Redis获取的“车辆-服务器”映射关系,仅将消息推送给承载了关注该车辆车商的特定服务器,将万级广播的O(n²)复杂度优化为O(n),峰值推送QPS提升10倍,通知延迟稳定在150ms内。
b. 设计增量编码与高效序列化协议:使用Protobuf进行数据序列化,并创新性采用差值传递法(Delta
Encoding),将竞价金额转换为与上次价格的差值,使90%以上的网络包体压缩至1个字节,网络带宽消耗降低80%。
- 核心业务静态化与系统韧性保障:
a.
主导拍卖详情页静态化架构:将包含数千字段的复杂车辆检测报告,通过预渲染技术生成静态页面并托管至CDN。此举使拍卖页面加载时间从秒级降至毫秒级,并彻底消除大JSON解析对业务服务的压力,服务可用性提升至99.99%。
b. 构建全方位容错与熔断机制:基于Netty实现可配置的心跳检测与连接保活机制;在推送链路引入熔断器(Circuit
Breaker),当下游服务不稳定时自动降级,并通过异步重试队列保证消息最终可达,系统在故障场景下仍能提供有损服务。
- 全链路监控与性能优化:
a. 建立可观测性体系:通过埋点与Prometheus监控,实时追踪竞价成功率、Top10计算耗时、推送延迟等核心业务与技术指标。
b. 主导性能调优:通过JVM调优(G1 GC)、SQL优化(索引、分库分表)、缓存策略(热点数据预加载)等系列措施,将系统整体吞吐量提升3倍,完美支撑业务峰值。
短URL系统(天天拍车)
职位:高级开发
项目简介:随着平台推广与外部营销活动的增多,长链接在分享、统计与追踪中带来传播不便与性能开销。本项目旨在构建一个高可用、高并发、可水平扩展的短URL服务系统,支持亿级短链生成与重定向访问,广泛应用于短信营销、社交分享与活动追踪场景。系统需在高QPS访问下仍保持低延迟响应,并确保短链唯一性与可追踪性。
技术栈:SpringBoot、SpringCloud、MyBatisPlus、MySQL、Redis、RocketMQ、Nginx、Dubbo、Zookeeper、Docker、Kubernetes
核心职责与成果:
- 架构设计与核心模块主导:
a. 主导短URL系统从0到1的架构设计,输出系统部署图、组件图、用例图、时序图、概要与详细设计文档。
b. 构建微服务化架构,采用SpringCloud+Dubbo混合通信模型,实现模块间的异步解耦与高可用部署。
- 高并发与性能优化:
a. 进行系统容量规划与性能指标估算,设计支持10万级QPS的短链生成与重定向体系。
b. 通过Redis与本地LRU双层缓存加速短链解析,配合BloomFilter防止缓存穿透,将重定向延迟控制在平均8ms以内。
- 短URL生成算法优化:
a. 分析三种生成方案(单向散列函数、自增ID、预生成池)并进行A/B测试,最终采用Snowflake分布式ID+Base62编码方案,保证短链唯一性与高吞吐生成性能。
b. 设计短链预生成文件池,采用批量写入与并行校验机制,使生成性能提升约3.7倍。
- 高可用与数据一致性设计:
a. 使用Redis+MySQL双写一致性策略,借助RocketMQ实现异步落盘与回溯补偿,保障数据最终一致性。
b. 部署Nginx+Dubbo集群,支持灰度发布与动态扩容,将系统可用性提升至99.99%。
- 日志追踪与监控体系:
a. 引入ELK日志采集+Prometheus监控,实现调用链路可视化与异常自动告警。
b. 通过埋点追踪短链使用情况,辅助市场团队完成用户转化率分析。
e-wallet支付钱包(奕木子)
职位:Java开发
项目简介:e-wallet是一款面向东南亚市场(新加坡地区上线)的移动支付钱包,支持扫码支付、余额充值、账户转账等多种支付场景。系统定位于轻量级金融支付平台,以移动端为主,兼顾安全性、易用性与高可用性,旨在为商户和用户提供便捷、安全的无卡支付体验。
技术栈:SpringBoot、SpringMVC、MyBatis、MySQL、Redis、RabbitMQ、WebSocket、Nginx、Docker、Lombok
核心职责与成果:
- 核心业务模块开发与优化:
a. 负责商品管理、支付收单、用户账户、商户结算等核心功能模块设计与实现,采用分层架构解耦业务逻辑,提升代码复用率与可维护性。
b. 在支付环节引入幂等性机制与分布式锁控制(Redis+Lua脚本),有效避免重复支付与超卖问题。
- 支付网关对接与国际化实现:
a. 独立完成新加坡支付通道API的英文文档分析与集成,兼容多币种结算与不同银行接口规范。
b. 封装统一支付网关模块,支持多渠道(扫码、余额、第三方通道)支付能力,提升接口复用度约60%。
- 高并发性能与SQL优化:
a. 对支付明细与商户账单查询SQL进行索引优化与分库分表改造,使核心查询RT从120ms降至40ms,数据库CPU占用降低35%。
b. 结合Redis缓存热数据与异步写回机制,显著降低数据库瞬时压力,应对支付高峰时段万级QPS并发。
- 数据一致性与系统稳定性保障:
a. 参与设计数据库与Redis双写一致性方案,采用消息补偿+事务表机制确保数据最终一致性。
b. 构建防雪崩缓存策略(预热+随机过期时间+限流熔断),提升整体系统稳定性与恢复能力。
- 实时通信与连接优化:
a. 基于WebSocket实现支付状态实时推送,设计心跳机制与连接复用策略,使连接延迟降低约45%。
b. 结合Netty优化TCP连接管理,避免连接风暴导致的Socket资源耗尽问题。