多阶段异步流任务框架
项目介绍:多阶段异步流任务框架是基于Java开发的任务自动调度、自动续做和重做、灵活任务配置的分布式异步
任务处理框架
个人职责:
负责架构设计:整体框架分为flowsvr层和worker层,flowsvr层负责提供http协议,并提供管理任务、调度任
务等接口,worker层负责消费任务
数据库表设计:仅设计低耦合的三张表,分别是任务信息表、任务配置表、任务位置表,方便任务快速注册、
检索和管理
分表逻辑设计:为解决数据量过大导致的性能下降,根据异步任务框架的特点,设计了一种全新的分表逻辑,
按照表中数据行数的大小分表,将冷热任务分开
进行性能调优:对任务进行压力测试,并且找到性能瓶颈并解决,性能从一开始的500QPS左右提升到
2300QPS左右
技术难点:
性能调优:对接口进行压测后发现只有500QPS左右,通过MySQL连接池优化
分表方案选型:业界中的分表组件,比如MyCat自带的分表功能,都不支持按大小分表。而框架支持的分表要
按大小分表,不断向前推进,而不是传统的分片长期稳定存在
多机竞争:存在多个worker容易拉到同一批任务的多机竞争问题,使用MySQL锁会导致CPU不稳定,因此使用
Redis分布式锁,提高了并发性能
任务排序规则:框架抽象出了一个order_time排序字段对任务排序,oreder_time受到任务修改时间、任务优先
级和任务失败次数等字段的影响,因此解决了多个字段耦合的影响