ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【架构师从入门到进阶】第六章:服务集群优化——第一节:并行与并发

【架构师从入门到进阶】第六章:服务集群优化——第一节:并行与并发 【架构师从入门到进阶】第六章服务集群优化——第一节并行与并发分流服务端分流设计并行和并发本篇文章我们来学习应用服务器的性能优化。我们在前面的文章中我们讲解了CDN、DNS、网关等等。在网关中我们还讲解了一些与安全相关的问题。那么现在让我们跟随着我们的请求一直往下。请求从客户端发出到DNSCDN过了网关一直往下就到了我们的应用服务器。应用服务器就是我们平时写的JAVA web项目的那个服务器该服务器跑的就是我们平时写的JAVA代码。分流通过前面课程的学习我们其实学过了分流的设计。什么是分流分流就是把一个集中的流量比如说一下子来了一亿个请求然后将这一亿个请求分开这边分5000万然后另外一边再分5000万这就是一个分流的思想。我们通过学习分流的设计对用户的请求进行了分流比如说通过DNS进行分流。我们用DNS里面的负载均衡进行分流。然后CDN把一些请求缓存到离用户较近的地方这也是一种分流的思想就是数据不在一个地方存储嘛。而请求到达我们的系统之后我们仍然可以使用反向代理等手段在系统内部对请求再进行分流。什么意思呢也就是说最开始只有一个服务器来处理请求那么我们现在让这个服务器类似于孙悟空变成无数个分身一样可以弄出几个和它一模一样的服务器来共同处理这些请求。服务端分流设计那么请求到达我们的服务之后应该如何做这种分流的设计呢我们从下面的几个角度来优化。使用集群这个大家很好理解原来有一个服务器做的事情现在我们把它变成多个服务器来做。分布式缓存这个我们在后面的文章中介绍。异步操作。代码的优化毕竟是我们的自己写的代码在这里面会涉及到一些代码如何去优化的问题。并行和并发先来学习一个概念并行和并发。集群其实就是一个并发或者并行的一个处理方式。那么我们在这里首先得了解清楚什么是并行和并发。并行和并发是我们在架构设计中经常涉及到的概念也是面试中经常会被人问到的一些问题。我们来说一下并行什么是并行是指在同一时刻有多个任务同时进行。比如说在这一时间我一边读书一边听歌。我边看书边听歌既读书又听歌描述的就是一种并行的状态。因为读书和听歌两件事情是可以同时发生的这叫并行。还有并发并发是指多个任务中的每个任务被拆分成细小的任务片从属于不同的任务的任务片被轮番执行。因此同一时刻只有一个任务在进行。但是从宏观上来看这些任务像是被同时处理。我们来画一个图就知道了。比如说这有两个任务任务一和任务二任务一有三个步骤任务二有两个步骤在某一时间点同一时刻只能执行一个步骤。步骤就是一个任务片在同一时间点只能执行一个。举一个例子就是说一边看书一边看电视在同一时刻你的眼睛要么只能看书要么看只能电视这个就是并发。因为在任意时刻你要么低头看书要么抬起头看电视这两件事情是交替执行的。所以说并行是真正意义上的并而并发只是宏观上的并。就是说并发在一个时间点只有一个任务执行但是我们从宏观的角度来看把它看成一个时间段那么在这个时间段里可能有无数个时间点而这无数个时间点上可能在执行不同的任务那么以这个时间段为一个单位就会发现好多事情在这个时间段内同时发生了。在实际生产中某一时刻向系统发送大量的请求这些请求几乎会被同时处理而这些请求在系统内部是并行呢还是并发呢我们无法从系统的外部判断出来所以我们在工作中宏观上或者说从架构设计上我们常常将并行和并发统称为并发就是不分那么细。我们的主要目的是什么呢就是让我们的系统尽可能多的去处理请求这是我们的最终目的。我们在这里总结一下并行和并发。并行指的是多个事情在同一个时间点同时发生了并发是多个事情在同一个时间段内同时发生了。并行的多个任务之间是不互相抢资源的这个资源指的是CPU的计算资源并发的多个任务之间是互相抢资源的。好了之所以说只有在多CPU的情况中才会发生并行就是说电脑确实有两个核这两个核能同时处理两个任务那么才是真正的并行否则看似同时发生的事情其实都是并发执行。所以我们讲在架构设计上我们将并发和并行统称为并发。那么通过并发的处理方式如何让多个系统同时处理多个请求呢其实就是集群比如说有一个系统来了十个请求这个系统都能处理得了可能在它的承载范围之内如果来了100个请求这个系统处理不了了。那么就把这个系统复制九份一共有十个同样的系统这样的话他就能把这100个请求分成十份进行下发下发到每个服务器上这样的话就能处理得了了这个就是最简单的集群。在前面我们学习过负载均衡后面的服务器是一个集群当大量的请求到达服务端后每个节点都是独立的服务器。所以各个节点之间的处理操作一定是并行。
返回列表