并发与并行

      并发与并行是为了最大化计算机的使用效率。

并发与并行的区别:

  • 并发是指多个线程操作同一个资源,不是同时执行,而是交替执行,单核CPU,只不过因为CPU的时间片很短,速度太快,看起来是同时执行(张三、李四厨师,共用一口锅炒菜,交替执行)。
  • 并行是真正同时执行,多核CPU。每个线程使用一个单独的CPU的资源来运行(张三、李四厨师、一人一口锅,一起炒菜)。

并行编程:是指允许多个任务在一个时间端内重复的执行的设计结构

高并发:我们设计的程序,可以执行海量的任务同时执行

  • QPS:每秒能够响应的请求数,QPS并不是并发数
  • 吞吐量:单位时间内处理的请求数,QPS和并发数决定的
  • 平均响应时间:系统对一个请求作出响应的平均响应时间 QPS=并发数/平均响应时间
  • 并发用户数:系统可以承载的最大用户量

互联网系统的架构提高系统并发能力的方法:

  1. 垂直扩展:(提升单机处理能力)
    • 增强单机的硬件性能:增加CPU的核数、内存升级、磁盘扩容
    • 提升系统的架构能力:使用Cache来提高效率
  2. 水平扩展

             扩展方案:

  • 集群:多个人做同一件事
  • 分布式:一个复杂的事情,拆分成多个简单的步骤,分别让不同的人去做
  1. 站点层扩容:通过Nginx反向代理,实现高并发的系统,将服务部署在多个服务器上
  2. 服务层扩容:通过RPC框架实现远程调用:Dubbo,Spring Clodud,将业务逻辑分拆成不同的RPC Client,Clident完成各自的不同的业务,如果并发量比较大,新增加RPC Client。

  3. 数据层扩容:一台数据库拆分成多态,分库分表,主从复制,读写分离。
原文地址:https://www.cnblogs.com/128-cdy/p/12454785.html