醋醋百科网

Good Luck To You!

《从零开始学架构》读书笔记(三):计算高性能

架构设计决定了系统性能的上限,实现细节决定了系统性能的下限。

站在架构师角度,主要关注两方面:

  • 单机性能,将单机性能发挥到极致
  • 单机无法满足是,设计集群方案

单机性能

单机服务器性能关键之一就是网络编程模型,有两个关键设计点:

  • 如何管理连接:阻塞、非阻塞、同步、异步
  • 如何处理连接:单进程、多进程、多线程

传统模式

模式

说明

问题

PPC

Process per Connection,每次有新的请求就fork一个进程处理

  1. fork代价高
  2. 父子进程通信复杂
  3. 进程数量大,系统压力大

Prefork

启动时预先创建好子进程,有新的连接调一个子进程处理

  1. 有“惊群”问题
  2. 父子进程通信复杂
  3. 进程数量大,系统压力大

TPC

Thread per connection,与PPC类似,用线程取代进程

同PPC,但资源消耗少

Prethread

与Prefork类似,用线程取代进程

同Prefork,但资源消耗少

Reactor

来了事件kernel通知用户程序,用户程序read-> handle-> send

关键点:非阻塞同步,复用

技术方案:I/O多路复用+线程池

Reactor负责监听和分配事件,线程池负责处理事件。

Proactor

来了事件kernel先处理read,处理完了通知用户程序handle,最后kernel send

理论上Proactor的效率要比Reactor高,但目前只有windows iocp支持,linux最成熟的还是Reactor。

集群高性能

多台服务器组成一个集群,前置负载均衡

负载均衡分类和架构

DSN负载均衡:用于地理级别

硬件负载均衡:用于机房或者集群级别,F5、A10

软件负载均衡:用于服务级别,Nginx(7层)、LVS(4层)

负载均衡算法

轮询

加权轮询

负载最低优先(请求数、cpu负载等)

hash(ip、url、id)

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言