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


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

    什么是高并发?

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

    假定:日 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调度多个进程的问题。从而让这些进程看上去是同步进行的(实际上是交替运行的)。

  • 相关阅读:
    Redis 3.2 版本后 list 的实现
    每当发生一次垃圾收集,所有用户线程都必须跑到最近的一个安全点然后挂起线程来等待垃圾回收
    你了解dt.jar吗
    spring boot + vue + element-ui全栈开发入门——开篇
    玩转spring boot——开篇
    java结合node.js非对称加密,实现密文登录传参——让前后端分离的项目更安全
    零门槛,包教会。让你在5分钟内使用以太坊ERC20智能合约发行属于自己的空气币
    spring boot高性能实现二维码扫码登录(下)——订阅与发布机制版
    spring boot高性能实现二维码扫码登录(中)——Redis版
    spring boot高性能实现二维码扫码登录(上)——单服务器版
  • 原文地址:https://www.cnblogs.com/xcgShare/p/11642831.html
Copyright © 2020-2023  润新知