美文网首页
关于并发

关于并发

作者: wi11iam | 来源:发表于2017-09-30 10:37 被阅读0次
    1.前端

    按钮的重复点击问题,特别是要向后台发送异步请求更改资源.
    解决方法,可以利用锁机制,定义一个资源,有请求过来后锁住资源.

    tag = false;
    onChange = () => {
            if(this.tag){
                return;
            }else{
                this.tag=true;
            }
    
            for(let i=0;i<answers.length;i++){
                if(answers[i].option.length==0){
                    Alert.alert("第"+(i+1)+"题未作答,请选择答案!");
                    this.tag=false;
                    return false;
                }
            }
            let str = JSON.stringify(answers).toString();
            this.commons.apis.riskEvaluationApi.saveRiskEvaluation(str).then((p:String)=>{
                this.commons.apis.riskEvaluationApi.riskEvaluationResult().then((m:RiskEvaluationResultModel)=>{
                    this.props.navigator.push({
                        title:"风险测评",
                        screen: "RiskEvaluation.RiskEvaluationFinishScreen",
                        passProps: {userRiskLevel:m,isTest:true},
                    });
                }).default();
            }).default(()=>{
                this.tag = false;
            })
        };
    
    2.后端

    1.如果是一台机器,可以写同步代码块或是锁.
    2.多台机器可以实现一个分布式锁,如用redis的setNx方法.
    3.还可以在数据库方面实现乐观锁,数据库记录添加版本号字段,更新的时候拿查询出的版本号和数据库中的版本号对比,如果相同则更新,不同则返回提示.

    3.架构

    架构上可以用kafka等消息队列,将请求串行化.

    相关文章

      网友评论

          本文标题:关于并发

          本文链接:https://www.haomeiwen.com/subject/zjdgextx.html