gpt4 book ai didi

java - 单例在应用程序引擎任务队列中的行为

转载 作者:行者123 更新时间:2023-11-30 08:51:23 25 4
gpt4 key购买 nike

当应用引擎旋转新实例时,我的静态变量会发生什么变化?更具体地说,我正在使用一个可以有 40 个实例/线程的任务队列。在所讨论的 Servlet 中,我使用的是单例,如

public class WorkerThread  extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
..
MySingleton single = MySingleton.getInstance();
..
}
...
}

单例是这样产生的

public class MySingleton {

public static I MySingleton getInstance() {
return MySingletonHolder.INSTANCE;
}

private static class MySingletonHolder {
public static final MySingleton INSTANCE = new MySingleton();
}

private MySingleton() {

}
..
}

我有以下问题:

  1. 由于这是一个任务队列,我是否需要担心 App-Engine 启动新实例以适应高需求的扩展?

  2. 单例是 WorkerThread 类的内部类还是 WorkerThread 类正在访问的另一个类有关系吗?

  3. 任务队列实例独立吗? A 相信他们是但我不确定。

我希望问题很清楚。我希望在所有实例中只有一个单例实例。如果问题不清楚,请要求澄清。

更新

以下是我的确切用例

public class SingletonProductIndexWriter {

private static final Logger LOG = Logger.getLogger(SingletonProductIndexWriter.class.getName());

public static IndexWriter getSingleIndexWriter() {
return IndexWriterHolder.INDEX_WRITER;
}

private static class IndexWriterHolder {

static PorterAnalyzer analyzer = new PorterAnalyzer();
static GaeDirectory index = new GaeDirectory(LuceneWorker.PRODUCTS);// create product index
static IndexWriterConfig config = GaeLuceneUtil.getIndexWriterConfig(LuceneWorker.LUCENE_VERSION, analyzer);
public static final IndexWriter INDEX_WRITER = getIndexWriter();


private static IndexWriter getIndexWriter() {
try {
LOG.info("Create single index writer for workers");
return new IndexWriter(index, config);
}catch(IOException e){
return null;
}
}
}
}

称为

IndexWriter writer = SingletonProductIndexWriter.getSingleIndexWriter();

有关详细信息,请参阅 Stack Overflow 线程:Worker threads cause Lucene LockObtainFailedException

最佳答案

推送和拉取队列均由标准实例处理(您可以在 queue.xml 中定位模块/前端/后端)。实例将扩展以满足您的正常流量和队列的需求。

单例(在此处描述的经典意义上)仅对于加载它们的类加载器是唯一的 - 它们在应用引擎上的应用程序实例中绝对不是唯一的 - 不会共享任何状态。使用此模式,每个应用引擎实例将有一个单例。

如果你需要共享状态,你将需要使用数据存储/云 sql/something。

关于java - 单例在应用程序引擎任务队列中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30585365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com