V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wangxiaoaer
V2EX  ›  问与答

到底什么是并发

  •  
  •   wangxiaoaer · 2018-05-13 11:04:33 +08:00 · 2570 次点击
    这是一个创建于 2174 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一般说起并发的时候,我们到底在讲什么?

    指的是 1 秒内“接收请求并且完成响应”整个流程的个数?还是 1 秒内“接受了请求,但是不一定完成响应,同时又没有把系统给搞垮”的个数?

    举个例子,一个请求涉及到数据库操作,由于某些原因,这些数据库操作需要耗费 300ms-4000ms (优化余地不大),在这种情况下,如果说想提高整个应用的并发,可以从哪些方面入手?

    第 1 条附言  ·  2018-05-13 18:06:15 +08:00
    很多人说到优化,那我就具体说下数据库慢的原因吧。

    我们首先从请求中解析出一个字符串数组,一般长度是 14 左右,然后去分别查对应的表,查表时间不一,快的 100 毫秒,慢的几秒,之所以慢,是涉及到空间计算,所以如果如果某些表里某些记录的地理形状很复杂,就会非常慢。
    第 2 条附言  ·  2018-05-14 11:33:10 +08:00
    还是有点不太明白,举个例子,一个基于同步网络库,比如 servlet2.x 的应用,请求从接收到响应,完整流程耗时 200ms,那么 1 秒钟可以完成 5 个请求,是不是 qps 就是 5 ?

    同样环境下,换成异步 vertx 等,能带来哪些方面的好处?
    8 条回复    2018-05-13 15:32:33 +08:00
    zzgwxf
        1
    zzgwxf  
       2018-05-13 11:15:18 +08:00
    如果性能瓶颈在数据库,可以考虑对数据库架构做一些调整或优化。
    lifespy
        2
    lifespy  
       2018-05-13 11:18:32 +08:00 via iPhone
    楼主搜索下并发和并行,应该就明白了
    wangxiaoaer
        3
    wangxiaoaer  
    OP
       2018-05-13 11:19:41 +08:00
    @zzgwxf #1 那一块可优化的余地不大,除非数据库配置升配,我关心的是应用层的。
    csl1995
        4
    csl1995  
       2018-05-13 11:23:20 +08:00 via iPhone
    应该是指的完成的个数。提高并发能力可以试试分库
    zzgwxf
        5
    zzgwxf  
       2018-05-13 11:51:23 +08:00   ❤️ 2
    @wangxiaoaer 高并发常是指,通过设计保证系统能够同时并行处理很多请求。提高系统并发能力的方式,方法论上主要有两种:垂直扩展( Scale Up )与水平扩展( Scale Out )。前者垂直扩展可以通过提升单机硬件性能,或者提升单机架构性能,来提高并发性,但单机性能总是有极限的,互联网分布式架构设计高并发终极解决方案还是后者:水平扩展。

    互联网分层架构中,各层次水平扩展的实践又有所不同:

    ( 1 )反向代理层可以通过“ DNS 轮询”的方式来进行水平扩展;

    ( 2 )站点层可以通过 nginx 来进行水平扩展;

    ( 3 )服务层可以通过服务连接池来进行水平扩展;

    ( 4 )数据库可以按照数据范围,或者数据哈希的方式来进行水平扩展;

    各层实施水平扩展后,能够通过增加服务器数量的方式来提升系统的性能,做到理论上的性能无限。
    zzgwxf
        6
    zzgwxf  
       2018-05-13 11:53:48 +08:00
    watzds
        7
    watzds  
       2018-05-13 12:51:29 +08:00
    你说的性能测试相关的并发请求,并发数是多少,不是并发两个字等定义的,还要具体考虑响应时间,成功率等等
    https://coolshell.cn/articles/17381.html
    Mazexal
        8
    Mazexal  
       2018-05-13 15:32:33 +08:00
    如果对于业务流程不长, 不是特别重要的数据库操作, 建议采用消息分发,消息队列进行操作
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1078 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:11 · PVG 03:11 · LAX 12:11 · JFK 15:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.