要连接到数据库蒙戈,在我们的非风暴的应用,我们创建蒙戈类的单一实例,并在应用程序共享
想知道什么是实现一个蒙戈连接在暴风雨框架汇集的正确方法?
选项我们已经尝试:
我们有一个壶嘴从Mongo的数据库中读取。 我们只要把单蒙戈类喷口内部和开放的方法初始化呢? - 但是,这种方法做,如果需要它不可能共享蒙戈实例螺栓。
希望有一些指针,这样做的正确方法。
Answer 1:
风暴中的连接池是一个有点复杂,因为你需要考虑几件事情:
- 您在集群环境中运行 - >多台机器需要自己联系
- 每次风暴工人在一个单独的JVM上运行- >很可能是执行者不在同一个工人跑......这意味着没有共享连接
所以,不要太担心了。 继续(在@ bridiver的答案等)的出水嘴和螺栓像正常的范围内使用Singleton实例类的。 如果他们碰巧共享相同的JVM,那么它们将共享同一个游泳池,你是好去!
在关于初始化,这里是我做的:
- 通过配置信息到喷出/螺栓通过构造
- 在初始化您的连接
open
(用于喷嘴)或prepare
(螺栓)方法 - 连接不喷口和螺栓之间共享
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