千家信息网

如何正确的使用elastic-job

发表于:2024-12-02 作者:千家信息网编辑
千家信息网最后更新 2024年12月02日,本篇文章为大家展示了如何正确的使用elastic-job,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、Docker基础命令docker ps 列出当前正在
千家信息网最后更新 2024年12月02日如何正确的使用elastic-job

本篇文章为大家展示了如何正确的使用elastic-job,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1、Docker基础命令
docker ps 列出当前正在运行的容器docker ps -a 列出全部的容器docker rm 容器ID 移除容器docker images 全部镜像运行zookeeper:docker run --name elasticzookeeper -p 2181:2181 -v /Users/abc/Desktop/WorkSpace/DockerData/elsaticzookeeper/data:/data/ -d zookeeperdocker run 运行一个容器  -name 给容器起个名字(标识,docker不能重复) -p 宿主端⼝口:容器器端⼝口  -v  宿主⽬目录:容器器⽬目录,挂载磁盘卷  -d 后台运行容器docker exec -it 容器id  bash  登录到容器中
2、elastic-job

我们可以参考官方的文档(有中文的),很详细有具体的使用,http://elasticjob.io/docs/elastic-job-lite/00-overview/

elastic-job是什么:

(摘自官网)Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Job-Cloud采用自研Mesos Framework的解决方案,额外提供资源治理、应用分发以及进程隔离等功能(PS:我在这里只说Elastic-Job-Lite,因为Job-Cloud我没去研究)。 简单的说Elastic-Job-Lite就是一个分布式定时任务。

怎么使用elastic-job:
1、maven依赖:
  com.dangdang  elastic-job-lite-spring  2.1.5  com.dangdang  elastic-job-lite-core  2.1.5
2、简单的列子
2.1写简单的定时任务的代码
public class FirstSimpleJobDemo implements SimpleJob {    private static final Logger logger = LoggerFactory.getLogger(FirstSimpleJobDemo.class);    @Override    public void execute(ShardingContext shardingContext) {        int shardingTotalCount = shardingContext.getShardingTotalCount();        int item = shardingContext.getShardingItem();        String shardingParameter = shardingContext.getShardingParameter();        logger.info("shardingTotalCount:{},shardingParameter:{}",shardingTotalCount,shardingParameter);        logger.info("----- ThredID:{},当前分片项:{}",Thread.currentThread().getId(),item);    }}

只要实现SimpleJob类然后实现execute就可以了,在execute中写我们的定时任务处理逻辑。

(摘自官网)SimpleJob 意为简单实现,未经任何封装的类型。需实现SimpleJob接口。该接口仅提供单一方法用于覆盖,此方法将定时执行。与Quartz原生接口相似,但提供了弹性扩缩容和分片等功能。 看下官方的demo

public class MyElasticJob implements SimpleJob {        @Override    public void execute(ShardingContext context) {        switch (context.getShardingItem()) {            case 0:                 // do something by sharding item 0                break;            case 1:                 // do something by sharding item 1                break;            case 2:                 // do something by sharding item 2                break;            // case n: ...        }    }}

使用context.getShardingItem()使用多线程对不同的数据做不同的处理。

  • 我们还可以实现Dataflow类型作业用来处理流作业,Script类型作业,用来处理脚本作业。具体可以查看官方文档。

2.2定时任务的配置:

a)需要配置注册中心

代码如下:

其中参数的意思为:

  • server-lists 连接Zookeeper服务器的列表

  • namespace Zookeeper的命名空间

  • base-sleep-time-milliseconds 等待重试的间隔时间的初始值

  • max-sleep-time-milliseconds 等待重试的间隔时间的最大值

  • maxRetries 最大重试次数

其具体使用和参数的单位等请去官网的配置手册中查看。

b)配置任务

其中参数的意思为:

  • id 作业名称

  • class 作业实现类,需实现ElasticJob接口

  • registry-center-ref 注册中心Bean的引用,需引用reg:zookeeper的声明

  • sharding-total-count 作业分片总数

  • sharding-item-parameters 分片序列号和参数用等号分隔,多个键值对用逗号分隔 分片序列号从0开始,不可大于或等于作业分片总数

  • overwrite 本地配置是否可覆盖注册中心配置,如果可覆盖,每次启动作业都以本地配置为准

具体使用可以参考官方配置手册。需要注意,overwrite这个参数默认为false

3、运维平台:
  1. 从github把console的代码下载下来然后运行代码,然后输入http://localhost:8899/即可访问控制台。8899为默认端口号,可通过启动脚本输入-p自定义端口号。

  2. 进入平台,新建全局配置,填写注册中心名称(就是自己好辨识是哪个项目或者那块业务相关的),注册中心地址(zookeeper的地址),命名空间需要和定时任务项目中配置的一致,加完后点击连接按钮,连接上后可进行下步操作

  3. 进入作业操作->作业维度 显示每个定时任务,然后可以操作每个定时任务

  4. 进入作业操作->服务器维度 显示服务器的IP,运行任务的个数等。

上述内容就是如何正确的使用elastic-job,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

作业 容器 任务 配置 运行 参数 代码 官方 接口 处理 服务 分布式 就是 方案 服务器 类型 解决方案 不同 最大 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全模式是什么 交换机服务器防火墙安装规范 商业金融数据库 全国信息网络安全状况调查 labsql创建数据库 学校网络技术竞赛图片 想学软件开发 工资 江门自主可控软件开发零售价 EIM软件开发 郑州大学中原网络安全院 国家网络安全宣传周宣传通稿 dw cc 数据库面板 什么是数据库开发平台常用软件 网络安全和信息化领导 公司网络技术员每天都干啥 深圳缦鑫网络技术有限公司 电脑和服务器同步错误 十年网络安全工程师 网络连接不到服务器是啥原因 数据库表删除不了 工程化软件开发所面临的困难 车企联合互联网科技 数据库如何进行编辑模式 网络安全控制程序反恐 企业级数据库应用是什么意思 广东科技学院互联网金融 在数据库中充值信息是实体吗 江津区一站式网络技术活动方案 萌宠大作战为什么加载不到服务器 济南正刊网络技术有限公司
0