我正在制作HQ TRIVIA应用程序,对于那些不知道它是每40秒左右的实时琐事应用程序的人,一个问题出现,每个连接的人都回答它,之后它显示了有多少人回答了每个问题。
我们期望我们将同时连接50,000个用户,我们的问题是如何在合理的时间内了解每个问题的答案,以便每个人都可以看到它?
我们正在使用firebase实时数据库。
我们当前的代码,只需更新计数器1000次,需要48秒,即使它是50000次也是不可接受的
final long start = System.currentTimeMillis();
for(int i = 0; i < 1000; i++){
final int finalI = i;
mainReference.child("c").runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Integer integer = mutableData.getValue(Integer.class);
if (integer == null) {
mutableData.setValue(1);
}
else{
mutableData.setValue(integer + 1);
}
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean b,
DataSnapshot dataSnapshot) {
if(finalI == 999){
long end = System.currentTimeMillis();
System.out.println("1000 TOOK: " + (end - start));
}
}
});
}
我应该解决这个问题的一种方法是分发计数器,然后将它们相加,但这并不理想。
此外,我还想设置一个节点应用程序并从那里开始递增并将其发送到firebase。
可以在合理的时间内完成这个计算,这样每个人都可以用firebase看到它吗?
提前致谢