项目介绍:ScheduleJob 定时任务平台是基于 Java 语言开发的一个定时微服务系统,可以当作微服务下的闹钟服务,支持高精准,高负载的定时需求处理。
个人职责:
微服务架构设计:主要运用了Spring Boot,Spring Cloud,Mybatis,MySQL,Redis、Nacos,Spring Gateway,Feign,
Jwt 等 Java 微服务通用技术。
存储设计:通过运用 MySQL+Redis 的二级存储结构,数据分片,数据有序性,数据冷热分区等设计,有效解决了高精准,高
负载等问题。
落地实现:通过引入模块化+异步化设计思路,让代码实现层次分明,模块职责清晰。有效提升了后续的扩展性和可维护性。
性能调优:为程序进行压力测试,并且找性能问题并解决,性能从一开始的 500QPS 提升到 2000QPS。
项目亮点:
高精准:通过数据的分治,有序性,二级存储结构设计,为高频扫描提供基础,同时结合 Java 线程池等技术对任务处理速度的提升,有效的将定时任务的精准度控制在最大误差 1 秒左右。
高负载:指同一时间大批量任务触发。通过引入 Redis ZSET 对数据进行分片,同时结合分布式锁实现任务的多机分发能力和扩容能力,最后再结合 Java 线程池等技术,使得高负载情况下任务也能快速处理。
数据冷热分区:有效的协调冷热数据对不同资源的占用是非常关键的。项目通过定时迁移模块 migrator 的设计,让动态的热教据一直维护在缓存方便高效存取,把冷数据放在磁盘或延迟冷数据的生成也减少了对关键缓存资源的占用。