Multithreading 访问Flink子任务中的单例对象
我有一个singleton类,负责检索池连接。我想知道从Flink子任务访问这个单例类的对象的最佳方式是什么,因为在多线程环境中存在单例对象初始化的潜在问题。最好使用Multithreading 访问Flink子任务中的单例对象,multithreading,thread-safety,singleton,apache-flink,flink-streaming,Multithreading,Thread Safety,Singleton,Apache Flink,Flink Streaming,我有一个singleton类,负责检索池连接。我想知道从Flink子任务访问这个单例类的对象的最佳方式是什么,因为在多线程环境中存在单例对象初始化的潜在问题。最好使用synchronized关键字锁定singleton类的初始化,还是有更好的方法在Flink运行时实例化singleton对象?在Flink中使用singleton模式是个坏主意,因为多个子任务是在不同的机器(不同的插槽)上计算的。 所以,如果您想使用所有机器的单一状态,最好将该状态保留在数据库中,并在数据库事务中修改它。如果每个f
synchronized
关键字锁定singleton类的初始化,还是有更好的方法在Flink运行时实例化singleton对象?在Flink中使用singleton模式是个坏主意,因为多个子任务是在不同的机器(不同的插槽)上计算的。
所以,如果您想使用所有机器的单一状态,最好将该状态保留在数据库中,并在数据库事务中修改它。如果每个flink插槽只需要一个单例对象(即重对象,如数据库连接),则可以在RichFunction实现的open(…)方法中创建它在flink中使用单例模式是个坏主意,因为多个子任务是在不同的机器(不同的插槽)上计算的。 所以,如果您想使用所有机器的单一状态,最好将该状态保留在数据库中,并在数据库事务中修改它。如果每个flink插槽只需要一个单例对象(如数据库连接等重对象),则可以在RichFunction实现的open(…)方法中创建它