当前位置: 首页 > 知识库问答 >
问题:

使用多线程系统在zookeeper上观看多个节点

傅阳炎
2023-03-14

我有一个项目,我在几个不同的线程中观察几个节点。现在,我注意到,当我观察一个节点时,它发生了变化,引发了一个事件,某个节点上的观察(例如称为a)会阻止所有其他观察者。因此,只有在A上的观察者完成后,另一个观察者才会返回以观察节点的变化。也就是说,如果一个节点在其观察程序被阻止时发生了更改(例如称为B),则只有在a上的观察程序完成后,节点B上的观察程序才会引发该事件。

此问题会导致应用程序变慢。

所以,为了解决这个问题,我想为每个线程使用不同的客户端连接(使用curator),但我已经读到一个连接就足够了,如果我需要多个连接,我的实现中有一些问题。

1) 我不明白多重连接zookeeper服务器有什么问题

2)我的问题有别的解决办法吗?

编辑-更具体的问题

我有一个主机,它可以从客户端获取请求(每个客户端都可以在我的服务器上保存文件,我们对这个文件进行一些处理,它比听起来更复杂,我不会详细说明),主机在/tasks/中创建一个节点,供工作人员处理该文件(当然,没有它的数据,数据在数据库中)。当工作人员监视他的节点时,他处理文件,当他完成时,他在/status中创建一个节点(其中包含其处理已完成的所有文件)。主节点监视节点/状态,当某些内容发生更改时,它会获取子节点,并创建一个线程(为了加快速度,因为zookeeper监视程序和回调是单线程的),该线程将释放这些文件(从数据库中删除一些元,向客户端返回响应,删除一些变量等)。

这是主要流程之一,但我还有代码的另一个重要部分,它们监听节点,并在发生更改时处理它们的子节点。

因为这是在一个线程中,我创建了一个已经完成的节点列表,所以我不会多次执行最后的过程,但它比这更复杂,而且该解决方案会导致其他问题,一些并发错误。

正如我所问

1) 对于每个重要的流,多个连接有什么问题,所以我不必在手表和回调中创建线程?

2)我可以在这里使用另一种解决方案吗?

共有1个答案

梁丘诚
2023-03-14

它没有很好的文档,但是ZooKeeper有一个处理观察者和异步回调的线程。我们为馆长写了一份关于它的技术说明。https://cwiki.apache.org/confluence/display/CURATOR/TN1

 类似资料:
  • 问题内容: 有没有办法使用以下方法订阅多个对象上的事件 例如 问题答案: 从AngularJS 1.3开始,有一个新方法称为观察一组表达式。

  • 我正在开发利用RxJava、realm和改进的应用程序。 我需要创建非常具体的数据处理链。我需要在io调度程序上执行改装调用,然后在我的自定义单线程领域调度程序上处理提供的数据,然后将结果推送到主线程调度程序上的ui。我试图通过使用多个组合来实现这一点,包括观察(observeOn)和订阅(subscribeOn),但我无法让中间部分在调度程序(scheduler)上执行。 我的目标是这样的

  • 问题内容: 我正在编写一个使用大量CPU的Java程序,因为它的工作性质。但是,许多程序可以并行运行,并且我使程序成为多线程的。当我运行它时,似乎只使用一个CPU直到需要更多的CPU,然后再使用另一个CPU- 我可以用Java强制其他操作在不同的内核/ CPU上运行吗? 问题答案: 当我运行它时,它似乎只使用一个CPU直到需要更多的CPU,然后再使用另一个CPU-我可以用Java强制其他操作以在不

  • 本文向大家介绍谈一谈,系统线程数量上限是多少?相关面试题,主要包含被问及谈一谈,系统线程数量上限是多少?时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程 Linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX。 这个限制可以在/usr/include/bits/local_lim.h中查看 ,对 linuxthreads 这个值一般是 1024,对于

  • 本文向大家介绍C#多线程编程中的锁系统(三),包括了C#多线程编程中的锁系统(三)的使用技巧和注意事项,需要的朋友参考一下 本章主要说下基于内核模式构造的线程同步方式,事件,信号量。 目录 一:理论 二:WaitHandle 三:AutoResetEvent 四:ManualResetEvent 五:总结 一:理论 我们晓得线程同步可分为,用户模式构造和内核模式构造。 内核模式构造:是由windo

  • 本文向大家介绍C#多线程编程中的锁系统(二),包括了C#多线程编程中的锁系统(二)的使用技巧和注意事项,需要的朋友参考一下 上章主要讲排他锁的直接使用方式。但实际当中全部都用锁又太浪费了,或者排他锁粒度太大了。 这一次我们说说升级锁和原子操作。 目录 1:volatile 2:  Interlocked 3:ReaderWriterLockSlim 4:总结 一:volatile 简单来说: vo