到底什么是并发

2018-05-13 11:04:33 +08:00
 wangxiaoaer

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

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

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

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

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

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

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

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

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

各层实施水平扩展后,能够通过增加服务器数量的方式来提升系统的性能,做到理论上的性能无限。
zzgwxf
2018-05-13 11:53:48 +08:00
watzds
2018-05-13 12:51:29 +08:00
你说的性能测试相关的并发请求,并发数是多少,不是并发两个字等定义的,还要具体考虑响应时间,成功率等等
https://coolshell.cn/articles/17381.html
Mazexal
2018-05-13 15:32:33 +08:00
如果对于业务流程不长, 不是特别重要的数据库操作, 建议采用消息分发,消息队列进行操作

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/454428

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX