首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多事务、并发性和性能

多事务、并发性和性能
EN

Stack Overflow用户
提问于 2012-04-25 00:39:23
回答 2查看 301关注 0票数 0

我们正在开发一款IOS游戏,并使用google-app-engine作为后台。用户可以通过点击建筑物来兑现游戏中的钱。用户点击多个建筑物的速度相当快,这会导致同一对象(用户)和不同建筑物上的多个并发事务。

不幸的是,这意味着4-5次点击超时,因为它失去了重试。这也意味着,由于锁住,第二次到第五次敲击非常慢。

我的第一个想法是把事务变成一个任务,但是在第二次调用函数时totalAmount就会出错,因为第一次调用还没有完成。

那么,有什么好方法可以支持对同一实体的多个快速更新呢?

代码语言:javascript
复制
       int retries = 5;
        while (retries > 0) {

            // Wrap everything into a transaction from here
            TransactionOptions options = TransactionOptions.Builder.withXG(true);
            Transaction txn = datastore.beginTransaction(options);

                try{
                    // Ok we got the template - now check against the 

                   // Update user... with money gained 
                   // Update Building...money withdrawn

                   //Do the transaction
                    datastore.put(txn, user.getEntity());
                    datastore.put(txn, building.getEntity());
                    txn.commit();

                    // do callback code...which returns TotalMoney

                    break;

                } catch (Exception e) {
                    if(retries > 0){
                        retries--;
                    }
                    else{
                   //fail code...
                } finally {
                    if (txn.isActive()) {
                        txn.rollback();
                    }
                }
            }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-25 00:54:54

为了一致性,你需要事务,为了响应,你应该使用后端:

对于fast update.

  • Whenever,
  1. 使用后端实例将数据保留在内存中。在后端更新数据时,还会启动任务并以事务方式更新数据存储区中的实体。
票数 3
EN

Stack Overflow用户

发布于 2012-04-25 04:12:36

一种可能是不使用XG事务,或者根本不使用事务。相反,有一个事务日志会更有好处,您可以在其中记录所有操作。这样,您可以让任务或后端应用事务日志的影响,这样,如果出现故障,它们最终将变得一致。这将极大地提高您的前端吞吐量,而且从长远来看,它将使客户服务变得更容易。

要记住的一件事是关于实体组更新的一般经验法则:设计实体组,使其以1/s的速率更新。实际速率要高得多,但这是防止冲突和争用的好规则。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10302205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档