《构建高性能Web站点》笔记:10 异步计算与并行计算

要解决的问题:并发能力没问题,但处理单个请求比较耗时,比如,获得一个统计值需要查多次数据库导致很长的响应时间

 

解决办法
      1.同步改异步,给用户的反馈也改成异步
         前端程序把任务丢到后台消息队列后,立即告诉用户:“正在为你统计,请稍候刷新页面”
         消息队列的消费者,即worker,在算出统计值后,再把结果丢进数据库
         用户刷新页面时,前端程序去数据库查询到结果,再反馈给用户

        这就叫异步计算

 

      2.串行变并行,减少总体响应时间,用户可以同步等待反馈
         把任务拆分成多个小任务,后台多个worker各领一个小任务并同时处理,响应时间立刻缩短
         并行处理完后,再将结果合并起来,返回给用户
         如果总体时间够短,对用户的反馈机制就没必要做成异步;用户可同步等等反馈

         这叫做并行计算

 

具体技术
      1. 同步改异步:用消息队列,如MemcacheQ
      2. 并行计算:采用Map/Reduce
         a. Map代表拆分,Reduce代表汇总
         b. 兼做监控、容错、可用性、负载均衡等事情
         c. Map/Reduce框架本身不是开放的(Google的内部产品),但思想是开放的;你可以用Hadoop来做Map/Reduce, 也可以自己编码实现

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.