本文原创文章,转载注明出处,博客地址 https://segmentfault.com/u/to... 第一时间看后续精彩文章。以为好的话,顺手分享到朋友圈吧,感谢支持。程序员
咱们在找工做时,常常在招聘信息上看到有这么一条:有构建大型互联网服务及高并发等经验,想到高并发,咱们第一想到了媒体上常常出现的新闻阿里双11每秒处理xx万订单,瞬间以为高并发是一种很屌的技术,很高大上,若是像笔者这种没作过大型服务的普通程序员,在此根据网上的资料,对高并发写一下我我的的见解算法
这里我引用一段架构师之路公众号究竟啥才是互联网架构高并发中的一段话来描述:数据库
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它一般是指,经过设计保证系统可以同时并行处理不少请求segmentfault
那么不少请求,具体达到多少请求才算是高并发系统呢?这个也没有明确数量上的定义,根据网上不少大型互联网公司的相关高并发博客,通常PV在千万级别以上的公司才会涉及到这个概念,因此若是某个系统的日PV在千万级别以上,多是一个高并发系统.这里根据具体业务不一样,这个数字可能高或者低一些微信
这里涉及到一个问题,不少同窗搞不清楚并发与并行的区别,这里我根据我根据知乎上这个问题某位网友的例子,我以为很好架构
并发:你有处理多个任务的能力,不必定同时(一个CPU轮流)并发
并行:有同时处理多个任务的能力(多个CPU同时)分布式
并发和并行均可以是不少个线程,就看这些线程能不能同时被(多个)CPU执行,能够说明是并行,并发是多个线程被一个CPU轮流切换着执行高并发
高并发相关指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等性能
响应时间:系统对某个请求作出相应的时间.例如处理一个HTTP请求,从HTTP发出到收到响应须要200ms,则200ms就是系统的响应时间.
吞吐量:单位时间内处理的请求数量
QPS:每秒响应请求数,这个感受和吞吐量区分不大
并发用户数:同时承载正常使用系统功能的用户数量. 例如微信,同时能够x亿人在线,必定程度表明了系统的并发用户数
有如下途径:
Golang从语言层面对多核CPU支持很是好,在设计程序时运用了并发的设计理念,Go程序在运行期有多是并行的
Rob Pike大神关于二者的阐述:“并发关乎结构,并行关乎执行”