远程处理和群集的组合

时间:2016-08-25 20:45:09

标签: quartz.net

我是Quartz.NET的新手,但能够为我的问题创建一个正在运行的解决方案。 有远程服务器实例,它们作为Windows服务执行。这些实例的jobstore是带有SQLLite后端的AdoJobStore。 客户端应用程序能够通过远程调度程序代理远程运行作业。

现在我必须将远程执行与群集相结合。就在这里,我正在努力实现远程服务器的调度程序代理。在客户端上创建调度程序时,将使用调度程序工厂的属性显式配置侧地址和端口。

在具有由多个远程服务和一个客户端组成的集群的体系结构中,必须使用Quartz.NET功能负载平衡在这些服务器上启动作业,将每个作业显式启动到特定服务器地址是没有意义的对我来说。

  1. 那么,客户端应用程序应该如何将作业提供给群集以及如何配置群集(例如,要使用的服务器IP地址和端口列表)?
  2. 此外:Quartz.NET服务器实例如何共享数据库以及如何为服务器减少SQLLite?
  3. 感谢任何有助于进一步阅读的提示,我必须这样做 马里奥

1 个答案:

答案 0 :(得分:0)

与此同时,我能够让我的系统运转起来。我的问题的答案“远程组合和&聚类“是:不要将这些功能组合在一起,因为没有必要。

  1. 要实现分布式群集,请不要使用远程处理(当您的第一个开发步骤是使用单个远程服务器创建客户端时很难找到)。 作业的分配以及因此实例的所有“连接”都是通过使用相同的数据库来完成的,因为该原因必须集中(现在使用SQL Express)。

  2. 不要启动本地(客户端)调度程序实例。

  3. 即使所有工作都应由群集中的远程服务器执行,也不要关心所有本地工作线程的出现。我的期望是在本地应用程序中使用带有0个线程的调度程序,因为您不想在此应用程序中启动任何作业。
  4. 问题未解决:似乎没有办法注册在集群中执行作业时将调用的侦听器。所以我必须建立自己的反馈渠道工作 - >启动应用程序以跟踪作业的状态(开始时间,完成时间,执行发生的节点,......)。
  5. 未解决的问题:当用户关闭本地(WPF)应用程序时,SimpleThreadPool中的无限循环

    while (runnable == null && run)
    {
        Monitor.Wait(lockObject, 500);
    }
    

    阻止退出流程。