对风暴拓扑蒙戈连接池(Mongo connection pooling for Storm topo

2019-10-21 10:25发布

要连接到数据库蒙戈,在我们的非风暴的应用,我们创建蒙戈类的单一实例,并在应用程序共享

想知道什么是实现一个蒙戈连接在暴风雨框架汇集的正确方法?

选项我们已经尝试:
我们有一个壶嘴从Mongo的数据库中读取。 我们只要把单蒙戈类喷口内部和开放的方法初始化呢? - 但是,这种方法做,如果需要它不可能共享蒙戈实例螺栓。
希望有一些指针,这样做的正确方法。

Answer 1:

风暴中的连接池是一个有点复杂,因为你需要考虑几件事情:

  1. 您在集群环境中运行 - >多台机器需要自己联系
  2. 每次风暴工人在一个单独的JVM上运行- >很可能是执行者不在同一个工人跑......这意味着没有共享连接

所以,不要太担心了。 继续(在@ bridiver的答案等)的出水嘴和螺栓像正常的范围内使用Singleton实例类的。 如果他们碰巧共享相同的JVM,那么它们将共享同一个游泳池,你是好去!

在关于初始化,这里是我做的:

  1. 通过配置信息到喷出/螺栓通过构造
  2. 在初始化您的连接open (用于喷嘴)或prepare (螺栓)方法
  3. 连接喷口和螺栓之间共享


Answer 2:

缺乏拓扑初始化方法可能存在问题。 我们所做的是调用初始化的准备方法连接池中单的方法(获得配置)使用任何螺栓。 我们使用synchronized方法有标志,以确保实际的初始化只执行一次。 这里是调用同步方法小的性能损失,但在大多数情况下,这不是一个问题。

Mongo.create_connection_pool(conf)

并且该方法

public static synchronized void create_connection_pool(Config conf) {
  if (connected)
     return;
  else {
    initialize connection...
    connected = true;
  }
}


文章来源: Mongo connection pooling for Storm topology