美文网首页
常见服务器架构

常见服务器架构

作者: 葡萄喃喃呓语 | 来源:发表于2017-09-27 09:58 被阅读89次

//
常见服务器架构 - 啊哈的日志 - 网易博客
http://4729469.blog.163.com/blog/static/38971212201311722616119/

这里的服务器指 client/server 编程中的 server。服务器常用架构包括四种:

  • 多线程
  • 多进程
  • 基于 I/O 复用的事件循环架构
  • SEDA 模式

前两种架构适用于类 web 服务器。这样的服务器只需处理来自客户端的请求,且请求间几乎是相互独立的。后两种架构适用于构造复杂的服务器,比如 Cassandra 系统中的一个节点,再比如 Redis 服务器。

多线程服务器对每个客户端来的请求生成一个新的线程来服务它。多进程服务器则生成一个新的进程。一个经常用的优化措施是使用线程池(或进程池)。

基于 I/O 复用的事件循环就是利用操作系统的 I/O 复用函数,比如 select, epoll, 采用一个主线程来监听所有的事件(网络 I/O 事件、timer 事件等),并在这个线程中调用相应的回调函数。

基于 I/O 复用的事件循环的好处之一是所有事件都在一个线程中处理,就不用考虑非常复杂的并发问题,大大简化了程序。

因为要在主线程中处理所有的事件,所以要求每个事件的处理时间必须要短。如果有些操作非常耗时,那么就要启动工作线程来处理耗时的操作,工作完成后通知主线程。一般通过管道来解决这个通信问题。(MooseFS 中的 chunkserver 就是这样做的)

SEDA 这种模式就是把对一个请求的完成过程划分为多个 stage。每一个 stage 对应一个线程池。在前面的一个 stage 完成之后就把请求扔到下一个 stage。可以把它想成一个流水作业。

SEDA 这种架构使得每个 stage 可以单独的控制和调优,这是它的一个优点。 它的缺点在于跨 stage 的控制比较难。 比如如果前一个 stage 的处理时间非常短,后一个 stage 是一个磁盘 I/O stage, 处理时间很长,那么请求就会在后一个 stage 堆积起来;划分成多个 stage 多,全局的过载控制就比较难。 Cassandra 系统中就有这个问题。

相关文章

  • 常见服务器架构

    //常见服务器架构 - 啊哈的日志 - 网易博客http://4729469.blog.163.com/blog/...

  • 聊聊跨域

    传统的javaee架构 下面是常见的 javaee 架构的简化版,客户端请求 apache/nginx 代理服务器...

  • 最常见的javaee架构

    最常见的Java EE架构 1、Java EE架构 调用方:表示前端 被调用方:表示后端 中间件(静态服务器/代理...

  • x86架构 - ARM架构

    1、目前最常见的架构 1、x86 架构: x86 架构性能好,但是耗电多、电压高,主要用于桌面电脑和服务器,生产厂...

  • 43-MySQL-逻辑架构

    一、逻辑架构 1、MySQL服务器处理客户端请求 2、MySQL服务器架构MySQL服务器架构.png 2.1、C...

  • Docker常见用法整理

    Docker常见用法整理 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Doc...

  • 架构应用(9),分层架构

    分层架构是一种常见的架构模式(架构风格),也叫N层架构,常见的2层C/S,B/S架构,三层架构MVC,MVP架构,...

  • 通过Nginx反向代理实现IP访问分流

    通过Nginx做反向代理来实现分流,以减轻服务器的负载和压力是比较常见的一种服务器部署架构。本文将分享一个如何根据...

  • 常见B/S系统架构设计

    常见B/S系统架构设计 要点 一:前端架构 前端是通常是指用户的请求到达应用服务器之前经历的环节,一般不包括业务逻...

  • Spring Cloud Alibaba微服务实战笔记之微服务架

    目录: 一、微服务介绍 二、微服务架构的常见问题 三、微服务架构的常见概念 四、微服务架构的常见解决方案 概述: ...

网友评论

      本文标题:常见服务器架构

      本文链接:https://www.haomeiwen.com/subject/blbyextx.html