1、背景

最近公司在迁移定时任务,以前老的定时任务是基于quartz搭建的分布式集群服务,遇到如下几个瓶颈问题:

  • 同一个任务只能有一个节点运行,其他节点不执行,导致性能低,资源也浪费
  • 定时任务在抢占执行的时候(数据库锁),谁先抢到谁执行,导致有些节点忙死,有些节点一直闲置。(没有合理的调度策略)
  • 当碰到大量短任务时,各个节点频繁的竞争数据库锁,节点越多这种情况越严重。性能会很低下
  • quartz 的分布式仅解决了集群高可用的问题,并没有解决任务分片的问题,不能实现水平扩展(水平扩展的问题,其实通过任务分布式锁的形式也能解决)

反正,最终选定了xxl-job。

想着写写xxl-job迁移说明的,但是网上太多了,官方指导手册也挺多的,还是算了。就记录下遇到的问题+解决方法吧。

2、问题

经过一番coding、配置 之后,在xxl-job任务调度中心界面上,点击【执行一次】,调度日志显示失败,错误信息是这样子的

xxl-rpc remoting error(Unexpected end of file from server), for url : http://10.25.31.45:9999/run

这个ip是我本机的,执行器注册啥的都没问题。

先说解决办法

2.1、解决办法

确认下netty的版本是否是4.1.48.Final。

Netty3、netty4可以共存,

但是每个只依赖一个主版本即可,netty4要4.1.48+

检查下pom.xml,果然有猫腻

正常情况下,xxl-job-core 依赖的netty版本是 4.1.48.Final,在我这里变成了4.0.35~

看了下xxl-job.pom文件里面是使用的 ${netty-all.version} 属性,这说明我的项目里面有别的地方也定义了这个值,覆盖了xxl-job的4.1.48

在项目的pom文件里面定义netty-all.version 为 4.1.48.Final 就搞定了。

2.2、原因

mavan在处理依赖的时候,有如下两个原则:

  • 最短路径优先
  • 相同路径下配置在前面的优先

那另外一个问题,你咋知道就是netty的问题呢?

(先卖个关子,后面再读读xxl-job的源码)

xxl-job使用遇到的问题的更多相关文章

  1. xxl系列部署启动通用办法

    http://10.10.6.186:8080/xxl-job-admin # 编译mvn compile # 清理mvn clean # 打包mvn package # 先清理后编译mvn clea ...

  2. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  3. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  4. C# if中连续几个条件判断

    C# if中连续几个条件判断 1.if (条件表达式1 && 条件表达式2) 当条件表达式1为true时 using System; using System.Collections. ...

  5. java web学习总结(三十) -------------------JSTL表达式

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  6. java web学习总结(二十八) -------------------JSP中的JavaBean

    一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...

  7. 关于如何使用sourcetree将本地项目提交到远端github总结?

    使用sourcetree将本地项目提交到github里,目前来说还是很流行的,我也是听说好玩,所以来琢磨了一下,从环境搭建到配置好,差不多用了一下午加一晚上的时间,有点虐心,好吧,废话不多说,介绍一下 ...

  8. 【.net+jquery】绘制自定义表单(含源码)

    前言 两年前在力控的时候就想做一个类似的功能,当时思路大家都讨论好了,诸多原因最终还是夭折了.没想到两年多后再这有重新提出要写一个绘制表单的功能.对此也是有点小激动呢?总共用时8.5天的时间基本功能也 ...

  9. lucene和es总结

    一.首先介绍lucene涉及到的排序过程 1.1.如何自定义排序对象 你可以自定义collector对象: 亦可以自定义comparator对象: 可以自定义scoredoc对象,决定如何处理结果集合 ...

  10. linux split 及优化

    split 虽然不好用, 但是还是可以用一下的! 有两个方式拆分, 按固定的行数, 按固定的大小. 默认是 1000 行, 后缀长度为2, 后缀长度N是说, 分片从N个字母/数字 的最小值 到 其最大 ...

随机推荐

  1. 我与Git的那些破事(下)--分支模型

    在上篇文章中,我提到了Git的基本概念和一些本人实际项目中的总结.然而,最近读了Vincent Driessen写的一篇文章,觉得他总结的太好了,站在他肩膀上忍不住将自己的理解分享出来.Vincent ...

  2. 002-Java的标识符和关键字

    目录 一.标识符 1.什么是标识符 2.标识符的命名规则 3.标识符的命名规范 二.关键字 1.什么是关键字 2.Java中的关键字 一.标识符 1.什么是标识符   标识符就是程序员自己规定的代表一 ...

  3. Team Queue UVA - 540

      Queues and Priority Queues are data structures which are known to most computer scientists. The Te ...

  4. k8s 运行单实例 mysql

    配置文件mysql.yaml --- apiVersion: v1 kind: Service metadata: name: mysql-01 spec: ports: - port: 3306 s ...

  5. kubernetes的架构

    kubernetes架构 k8s的物理结构是master/node模式,架构图如下所示 master一般是三个节点或者五个节点做高可用,根据集群规模来定,master高可用指的是对apiserver做 ...

  6. 记一次 .NET医疗布草API程序 内存暴涨分析

    一:背景 1. 讲故事 我在年前写过一篇关于CPU爆高的分析文章 再记一次 应用服务器 CPU 暴高事故分析 ,当时是给同济做项目升级,看过那篇文章的朋友应该知道,最后的结论是运维人员错误的将 IIS ...

  7. ES系列(四):http请求分发框架解析

    上一篇讲解了es的网络通信模块实现过程,大致明白其工作原理.再总结一下,就是基于netty编程范式,形成es通信基础.从而,最终我们得到几个重要的handler: Netty4HttpPipelini ...

  8. 01- Java概述

    一 Java简介 java语言发展史 发展史简单了解:如下: https://www.jianshu.com/p/a78fcb3ccf63 java语言平台 JavaSE(标准版):可以用户开发普通桌 ...

  9. 软件篇-04-OMPL和FCL用于SLAM轨迹规划

    使用OMPL内置的infoRRTstar算法模块和FCL碰撞检测库实现当前点和目标点的轨迹规划, 参考文章:https://www.cnblogs.com/shhu1993/p/7062099.htm ...

  10. 关于width的继承和获取

    absolute元素(如果没有设置width值),其宽度自适应于内部元素, <!DOCTYPE html> <html lang="en"> <hea ...