路由策略
路由策略 | 解释说明 |
---|---|
最后一个 | 客户端a、b、c三台集群的情况下,总是命中c这台机器 |
第一个 | 客户端a、b、c三台集群的情况下,总是命中a这台机器 |
轮询 | 客户端a、b、c三台集群的情况下,总是安装a、b、c这种每台命中一次的节奏周而复始 |
LRU | 客户端a、b、c三台集群的情况下,会命中最近最少使用的那台客户端。 |
随机 | 客户端a、b、c三台集群的情况下,随机命中一台 |
一致性哈希 | 客户端a、b、c三台集群的情况下,一致性哈希算法会稳定的调度其中一台机器。 |
在测试之前我们可以固定一下其他参数,在只变更路由策略下进行测试
页面配置参数
配置项 | 配置内容 |
---|---|
任务名称 | 路由测试 |
组名称 | ruoyi_group |
状态 | 启用 |
任务类型 | 集群 |
执行器类型 | java |
执行器名称 | routerTest |
方法参数 | |
路由策略 | $ |
阻塞策略 | 丢弃 |
触发类型 | 固定时间 |
间隔时长 | 60秒 |
超时时间(秒) | 60秒 |
最大重试次数 | 0 |
重试间隔 | 1秒 |
节点代码
java
@JobExecutor(name = "routerTest")
public ExecuteResult routerTest(JobArgs jobArgs) throws InterruptedException {
SnailJobLog.REMOTE.info("REMOTE日志.参数值:{}", JSON.toJSONString(jobArgs));
SnailJobLog.REMOTE.info("REMOTE日志.当前节点{}", env.getProperty("server.port"));
return ExecuteResult.success("处理完成");
}
然后我们依次启动dev1->dev2->dev3
1.最后一个
当配置路由策略为最后一个时,SJ会一直将任务分发到最后一个注册进SJ的客户端节点,我们可以执行3次来验证一下是否如此
结果:SJ将所有任务都分发给了最后一个注册进来的客户端节点
2.第一个
当配置路由策略为第一个时,SJ会一直将任务分发到最先一个注册进SJ的客户端节点,我们可以执行3次来验证一下是否如此
结果:SJ将所有任务都分发给了最先一个注册进来的客户端节点
3.轮询
当配置路由策略为轮询时,SJ会一直将任务分发到最先一个注册进SJ的客户端节点,我们可以执行3次来验证一下是否如此
结果:SJ将所有任务轮流分发给了所有在线的客户端节点
4.LRU
首先我们来认识一下LRU指的是什么
LRU(Least Recently Used)算法,即最近最少使用算法,是一种常用的页面置换算法,也用于缓存淘汰策略。它基于一个假设:如果数据最近被访问过,那么将来被访问的几率也更高。LRU算法会淘汰最长时间未被使用的数据。
当配置路由策略为LRU时,SJ会一直将任务分发到执行调度次数最少的客户端节点
5.随机
随机大家都见名知意啦,这里就不做演示了。
6.一致性哈希
首先将所有在线节点编成一个哈希环,当有一个任务在SJ中被调度时,会根据任务计算出一个哈希值,然后通过哈希值在哈希环上找寻具体执行的客户点节点。