Google app engine 哪一个更好:SetDefaultHighRepJobPolicyUnpliedJobPercentage(100)与CustomHighRepJobPolicy

Google app engine 哪一个更好:SetDefaultHighRepJobPolicyUnpliedJobPercentage(100)与CustomHighRepJobPolicy,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,我试图在最坏的条件下测试我的应用程序,以确保最终的一致性。我似乎可以使用两种方法: 方法A1:SetDefaultHighRepJobPolicyUnpliedJobPercentage(100) 资料来源: 方法A2:CustomHighRepJobPolicy private static final class CustomHighRepJobPolicy implements HighRepJobPolicy { @Override public boolean shou

我试图在最坏的条件下测试我的应用程序,以确保最终的一致性。我似乎可以使用两种方法:

方法A1:SetDefaultHighRepJobPolicyUnpliedJobPercentage(100)

资料来源:

方法A2:CustomHighRepJobPolicy

private static final class CustomHighRepJobPolicy implements HighRepJobPolicy {
    @Override
    public boolean shouldApplyNewJob(Key arg0) {
        return false;
    }
    @Override
    public boolean shouldRollForwardExistingJob(Key arg0) {
        return false;
    }   
}
private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
        .setAlternateHighRepJobPolicyClass(CustomHighRepJobPolicy.class));
private static final class CustomHighRepJobPolicy implements HighRepJobPolicy {
    @Override
    public boolean shouldApplyNewJob(Key arg0) {
        return true;
    }
    @Override
    public boolean shouldRollForwardExistingJob(Key arg0) {
        return true;
    }   
}
private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
        .setAlternateHighRepJobPolicyClass(CustomHighRepJobPolicy.class));
private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
            .setApplyAllHighRepJobPolicy());    
资料来源:(Broc Seib的评论)

问题A

这两种方法似乎都产生了不更新任何索引的预期效果,因此没有祖先的查询永远不会返回结果。但这两种方法有什么区别吗

问题B

当测试相反的方法时(没有最终的一致性,因此指数会立即更新),似乎有三种方法……有什么区别吗

方法B1:SetDefaultHighRepJobPolicyUnpliedJobPercentage(0)

资料来源:

方法B2:CustomHighRepJobPolicy

private static final class CustomHighRepJobPolicy implements HighRepJobPolicy {
    @Override
    public boolean shouldApplyNewJob(Key arg0) {
        return false;
    }
    @Override
    public boolean shouldRollForwardExistingJob(Key arg0) {
        return false;
    }   
}
private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
        .setAlternateHighRepJobPolicyClass(CustomHighRepJobPolicy.class));
private static final class CustomHighRepJobPolicy implements HighRepJobPolicy {
    @Override
    public boolean shouldApplyNewJob(Key arg0) {
        return true;
    }
    @Override
    public boolean shouldRollForwardExistingJob(Key arg0) {
        return true;
    }   
}
private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
        .setAlternateHighRepJobPolicyClass(CustomHighRepJobPolicy.class));
private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
            .setApplyAllHighRepJobPolicy());    
资料来源:(Broc Seib的评论)

方法B3:setApplyAllHighRepJobPolicy

private static final class CustomHighRepJobPolicy implements HighRepJobPolicy {
    @Override
    public boolean shouldApplyNewJob(Key arg0) {
        return false;
    }
    @Override
    public boolean shouldRollForwardExistingJob(Key arg0) {
        return false;
    }   
}
private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
        .setAlternateHighRepJobPolicyClass(CustomHighRepJobPolicy.class));
private static final class CustomHighRepJobPolicy implements HighRepJobPolicy {
    @Override
    public boolean shouldApplyNewJob(Key arg0) {
        return true;
    }
    @Override
    public boolean shouldRollForwardExistingJob(Key arg0) {
        return true;
    }   
}
private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
        .setAlternateHighRepJobPolicyClass(CustomHighRepJobPolicy.class));
private final LocalServiceTestHelper helper =
        new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
            .setApplyAllHighRepJobPolicy());    

来源:

我推荐的方法是在真实/悲观的负载测试模拟工作负载下测量每个选择。这将比我们任何人只要仔细思考就能更好地回答你的合理怀疑!“你无法衡量的,你无法管理”和“数据roolz”


我不知道这些方法之间有什么实质性的区别——这并不意味着没有任何区别(唉,Java不是我最擅长的领域,所以可能有一些Java特有的微妙之处我不知道!)

更确切地说,这意味着我在您的位置上所做的正是我在这里所建议的——将一些重负载测试工作负载拼凑在一起,并通过相同的一组单元测试来运行它们,只改变策略,并查看在测试结果和运行时间方面会发生什么


我希望观察相同的测试结果,大致相同的运行时间,任何差异都会告诉我需要深入挖掘的地方!-)

在真实/悲观的负载测试模拟工作负载下测量每个选择如何?这将比我们任何人只要仔细思考就能更好地回答你的合理怀疑!“你无法衡量的,你无法管理”和“数据roolz”!谢谢@AlexMartelli。因为这是针对单元测试的,所以我不确定我想要测量什么样的负载测试。我想了解的是这两种方法之间的任何副作用,这些副作用对我来说可能并不明显。我没有意识到任何实质性的区别——这并不意味着没有任何区别(唉,Java不是我最擅长的领域,所以可能有一些Java特有的微妙之处我不知道!),这意味着我在你的位置上所做的正是我所建议的——将一些重负载测试工作负载拼凑在一起,并通过相同的单元测试运行它们,只改变策略,看看测试结果和运行时间会发生什么(我期望相同的测试结果和大致相同的运行时间,任何差异都会告诉我需要深入研究的地方)。谢谢@AlexMartelli,请随意将其作为答案发布,我会接受,因为没有其他答案发布。现在根据OP的要求,将其作为答案发布。