项目阶段:甲方公司1.0版本系统升级,解决数据壁垒、系统性能扩展受限、业务管理混乱等问题。随着甲方公司业务的扩展,1.0版本已无法满足需求,急需构建高性能、高并发、业务高度可扩展的TMS解决方案。
团队规模:整体开发团队30人,我主要参与TMS系统的开发。
技术栈:
业务层:SpringCloud Alibaba, SpringBoot, MybatisPlus, Spring Data (MongoDB, Elasticsearch, Neo4j, MySQL), Redis, RabbitMQ, XXL-JOB
交付平台:Kubernetes, Jenkins CI/CD, GitLab, Docker
工具:JIRA, Git, ApiFox, JMeter, Maven
岗位职责
业务模块:负责调度流程、支付模块、路线规划、用户下单、快递员取派件、运单管理等流程的开发。
需求沟通:与产品团队深入沟通,明确需求用例,确保开发效率。
质量保证:与测试团队合作,完成接口测试、模拟测试、全链路压力测试等,确保代码质量。
流程优化:持续优化核心业务流程,探索新技术解决方案,提升系统性能。
技术亮点
路线规划:使用 Neo4J替代传统 DB,设计物流路线规划流程,保存一二三级转运中心、路线的信息,并通过 Neo4l实现按照成本优先或速度优先方式查询转运路线
使用MongoDB保存物流轨迹信息。
设使用 MangoDB 保存物流轨迹信息,再加一级缓存(Nginx+Lua+Redis)和二级缓存(Caffeine),设计了万级 QPS 的物流轨迹查询接口
缓存穿透解决:合理的使用 Redis 布隆过滤器解决缓存穿透问题,不止在查询场景下,其实凡是对外暴露的任何对数据库 CRUD 操作接口,都可能面临缓存击穿。
服务范围保存:使用 Elasticsearch设计了快递员取派件任务索引,优化了关于快递员任务的复杂查询需求,降低对 DB 的复杂查询压力。
任务索引优化:使用Elasticsearch设计快递员取派件任务索引,优化复杂查询需求。
运单ID生成:采用美团leaf号段模式,生成唯一运单ID。
Redis数据类型应用:合理的使用 Redis 的数据类型,围绕业务设计解决方案,如:使用 List保存待分配的运单、使用 Set 完成运单分配后的去重,已及运单轨迹信息的缓存