zoukankan      html  css  js  c++  java
  • 利用取消机制缓解后台的查询性能瓶颈


    内容:
    利用取消机制缓解后台的查询性能瓶颈,核心在WebAPI查询方法体内关注CancellationToken并适时取消异步任务, 这将大大提高应用的响应能力。

    场景优化:
    1.网络交互 不按超时时间的 【高并发场景下 受CPU 时间片切换到时的超时操作不按设定时间执行】偶发小概率事件
    2.浏览器访问情况下、适用于 APP取消或者网路中断
    1.F5刷新 2.转向其他页面 3.浏览请求被终止

    注意:适用某些长查询或者高并发下任务堆积情况下的取消或熔断

    处理方案 取消令牌
    1.httpclient 三方交互 如极光、大汉、es、权重服务、微信等网络交互的 超时方式
    示例:
    CancellationTokenSource cs = new CancellationTokenSource();
    if (timeOut > 0)
    {
    cs.CancelAfter(timeOut);
    }
    var response = await http.SendAsync(httpRequestMessage,cs.Token);

    2.webapi Http 用户请求取消,终端等

    注入:
    private readonly IHttpContextAccessor _httpContextAccessor;

    //网络请求示例
    var ct = _httpContextAccessor.HttpContext?.RequestAborted ?? default(System.Threading.CancellationToken) ;
    return await client.RequestPasswordTokenAsync(clientRequest,cancellationToken:ct);


    3.ORM dapper 示例 数据库长度

    CancellationTokenSource cs = new CancellationTokenSource();
    cs.CancelAfter(1000);

    var id = (await conn.QueryAsync<int>(
    new CommandDefinition(sqlStr, cancellationToken: cs.Token)
    )).FirstOrDefault();


    注入:
    private readonly IHttpContextAccessor _httpContextAccessor;

    var ct = _httpContextAccessor.HttpContext?.RequestAborted ?? default(System.Threading.CancellationToken) ;

    var id = (await conn.QueryAsync<int>(
    new CommandDefinition(sqlStr, cancellationToken: ct)
    )).FirstOrDefault();

  • 相关阅读:
    C语言中字符串常用函数--strcat,strcpy
    linux下core dump【总结】
    C语言memset()函数:将内存的前n个字节设置为特定的值
    const的理解、const指针、指向const的指针
    C99标准的新特性
    ISO C语言新标准(C11)
    哪个版本的gcc才支持c11
    不使用session,借助redis实现验证码
    google浏览器截图工具 Open Screenshot(代码截图)
    springmvc+jpa实现分页的两种方式
  • 原文地址:https://www.cnblogs.com/lhbshg/p/13332369.html
Copyright © 2011-2022 走看看