通过交互式追问了解一个中间件
? 啥是XXL-JOB
! 一个轻量级分布式任务调度平台-,XXL居然是开发者的名字
? 我可以理解为安排定时任务吗
! 实际定时任务只是一部分,任务调度还包括任务分配、执行、监控、重试等功能
? 为啥我要引入XXL-JOB,对于一般定时任务不是可以直接实现
! 要不为什么说是分布式任务调度平台呢,支持集群部署(高可用),可以对任务动态分配调整,还可以对执行情况监控
? 那XXL-JOB主要靠什么实现呢,底层还是一般定时任务吗
! 差不多,可以说是升级版的定时任务系统,专门为分布式场景设计
? 那对于XXL-JOB我需要了解哪些部分呢
! 调度中心(任务调度、分配、监控);执行器(任务执行节点,接收调度中心的请求,执行相应的方法);数据库(存储任务信息、调度日志、执行器注册信息等);任务触发机制(基于定时任务);通信机制(http);路由策略(轮询、随机、故障转移、一致性哈希、分片广播...);任务分片...
? 任务分片是啥,具体怎么操作
! 就是把大任务拆成小任务,然后分给很多人去干->在XXL-JOB里就是把提交的任务分配到不同的执行器上并行执行
? 那我怎么区分我分配到了哪个任务,不会重复吗
! 是依靠分片参数(分片总数->XxlJobHelper.getShardTotal(),当前索引分片->XxlJobHelper.getShardIndex())来实现的,把分片参数发送给执行器,执行器再根据分片的参数处理对应数据
? 想要使用XXL-JOB我需要做哪些工作
! 环境准备->部署调度中心->初始化数据库->集成执行器->调度中心管理
! 发现其实就是正常再启动一个项目,然后在注册的时候进行一定的配置
? 我记得使用时似乎需要配置bean,为什么没有提到
! 对于XXL-JOB需要创建一个配置类来加载执行器的配置信息
? 能说说配置时有哪些需要重点关注的地方吗
! 通信配置(调度中心地址、执行器端口、网络);执行器注册(名称、自动注册);任务参数(名称、Corn、路由...);分片参数;日志;高可用(调度中心和执行器集群部署)
? 调度中心也可以集群部署吗,按理解不应该是执行器进行集群
! 执行器集群->任务执行高可用、负载均衡;调度中心集群->调度服务高可用
? 数据库呢,不是只有一个数据库
! 多个调度中心共享一个数据库,通过数据库锁保证任务调度的唯一性
? 难道这个调度中心也有类似于网关的的东西来负责吗
! 不是的,调度中心的集群并不依赖于网关,通过共享数据库行锁,轻量化设计
? 那作为执行器我怎么确定我的调度中心入口呢
! 如果调度中心是集群部署,且未使用负载均衡器,可以在执行器配置中指定所有调度中心实例的地址,用逗号分隔。执行器会随机选择一个可用的地址进行通信
? 那我实现负载均衡岂不是要用到nginx作为网关,那你为什么还说是不依赖网关
! 部署不依赖网关,但可以选择性引入nginx等外部入口