为了账号安全,请及时绑定邮箱和手机立即绑定

elastic job原理解析-SchedulerFacade

标签:
Java

elastic job原理解析-SchedulerFacade(一)

elastic job原理解析-Scheduler中描述elastic job的相关quartz的操作,但是并没有牵扯到对于job的管理,如分片,主节点选举等。分片,job的状态的持久化等一些列操作是有schedulerFacade和jobFacade完成。
schedulerFacade既然使用了facade模式那么必然scheduleFacde中存在大量服务需要被调用。如下图中显示facade所依赖的对象

file

SchedulerFacade

在jobSchedule分别在构造函数和init中对schedulerFacade完成了创建和更新。

schedulerFacade的初始化

schedulerFacade = new SchedulerFacade(regCenter, liteJobConfig.getJobName(), elasticJobListenerList);

在schedulerFacade中构造函数中对各个server进行了初始化,诸如leaderService,serverService等。这个过程中主要是将jobConf的信息传递到各个service,使其完成各个服务的创建。

schedulerFacade的job的持久化

在jobSchedule的init方法中涉及到节点的持久化,为什么到这个时候采用持久化节点,因为schedule的init的时候在调用quartz完成job的启动,所以这个job任务的选举分片也只有在这个过程中才可以处理。

LiteJobConfiguration liteJobConfigFromRegCenter = schedulerFacade.updateJobConfiguration(liteJobConfig);
public LiteJobConfiguration updateJobConfiguration(final LiteJobConfiguration liteJobConfig) {
        configService.persist(liteJobConfig);
        return configService.load(false);
    }

上面两段代码一段是jobSchedule中init的schedulerFacade对job任务的更新,这个过程是将job持久化到zk的过程。

schedulerFacade的主节点选举

持久化结束之后,jobschedule创建quartz的job并启动quartz,启动完成quartz之后需要牵扯的一个主节点的选举和分片。

public void registerStartUpInfo(final boolean enabled) {
        listenerManager.startAllListeners();
        leaderService.electLeader();
        serverService.persistOnline(enabled);
        instanceService.persistOnline();
        shardingService.setReshardingFlag();
        monitorService.listen();
        if (!reconcileService.isRunning()) {
            reconcileService.startAsync();
        }
    }

elasticJob过程中主节点选举过程比较简单,仅仅是zk节点的抢占,并没牵扯其他

public void executeInLeader(final String latchNode, final LeaderExecutionCallback callback) {
        try (LeaderLatch latch = new LeaderLatch(getClient(), jobNodePath.getFullPath(latchNode))) {
            latch.start();
            latch.await();
            callback.execute();
        } catch (final Exception ex) {
            handleException(ex);
        }
    }

抢占之后主节点内容如下192.168.0.109@-@767
facade里面包含服务比较多,会分成多个篇幅依次写出。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消