分布式、多线程与高并发 涉及到这些关键词到底是说的什么

被面试官问道 : 高并发系统可以采用哪些手段来解决,分布式系统如何解决一致性的问题的时候 一脸懵逼。

什么是高并发?

在互联网时代 ,所谓的高并发通常是指:某个时间点 ,有多少个访问同时到来。

假定:日 pv(页面访问量)在千万级以上就可能成为高并发系统,之所以说可能是因为 财大气粗的公司不走技术路线 直接靠机器堆出来。

来几个概念:

  QPS(TPS):每秒 request 或 事务 数量 在互联网领域 ☞ 每秒响应请求数(http请求)

  吞吐量: 单位时间内处理请求的数量(由QPS  与  并发数决定)

  响应时间:系统对一个请求做出响应的平均时间 例如处理一个HTTP请求需要200ms( 这里推一个会造成http请求延迟大的原因:一个简单的http请求 怎么延迟这么大?

  注意:QPS 和 并发量不一样  并发是某个时刻有多少访问同时到来,QPS是秒钟相应的数量  

  所以:QPS: 并发/平均响应时间

假设:一个http请求需要100ms 那么一秒就能处理十个 QPS:10 

如何提升:

1 加机器 :涉及的问题是 db主从 负载均衡 读写分离等问题

2 提高单机性能

分布式、多线程与高并发 这三点 总是相伴而生 各有侧重 :

1 分布式 

比较倾向于是一个概念 : 主要是解决单个物理服务器造成的容量和性能瓶颈的一种手段 

该领域好汉很多问题:分布式文件系统,分布式缓存,分布式数据库,分布式计算等,涉及到的名词:Hadoop,zookeeper,MQ等

分布式实现有两种形式:

水平扩展:同一个服务,因为流量太多遭不住了,一台服务器处理这些流量费劲,就把流量分到两台服务器上,不行就再加,大家干同一个事。(不是干一个同事)

     就好比有一桌子饭菜  一个人吃不了 大家一起吃 

垂直拆分:客户端有多种需求,把这些需求拆分开,放在不同的服务器上 ,大家处理不同的事情,合起来构成一个整体。

     就好比有一桌子饭菜 分工明确谁吃哪一盘

2 高并发

同时有多少量

高并发可以通过分布式解决 将并发量分配到不同的机器上。除此之外 还可以使用缓存和多线程技术让一台服务器的效能发挥更好。

说说高并发如何解决吧!

要想解决高并发 就要知道两个概念:同步和异步

同步:执行方法的过程不能干别的事 进程是阻塞的。单线程 

   关键字:synchronized   当一个对象访问 带有synchronized 关键字的代码块时候 其他对象需要等候上一个对象访问完 才能进行访问 叫做同步。

异步:执行方法过程中无法阻塞 如果发出异步请求 就进行下一件事。多线程  

           如果没有那个关键字则说明不同对象可以同时访问代码块 叫做异步。、

处理异步问题 就是使其加锁变为同步 

Java:加synchronized 

数据库:加悲观锁(传统物理锁)或乐观锁 详情参考另一篇文章:数据库悲观锁 乐观锁

3 多线程

软件或硬件实现多个线程并发执行的技术:它更多是解决cpu调度多个进程的问题。从而让这些进程看上去是同步进行的(实际上是交替运行的)。

原文地址:https://www.cnblogs.com/xcgShare/p/11642831.html