高性能架构各层中间件应用及特点-个人整理

高性能的网站架构离不开各层中间件的支持,作为一个成长中的架构师,富有创造力固然很重要,但是博览各家之架构,集各家之所长,拓展眼界,不断进步无疑是同样重要的,看多了各大型互联网的架构,其实多多少少都离不开下面列到的一些东西,所谓万变不离其宗,这些就好比各种兵器,作为一个武林高手,18般武器还是多少要熟悉一些的。下面是我的一些整理,有些实战过,有些只是初步研究:

高性能网站的架构如下图:

 

1.最前端负载均衡层

硬件负载均衡:

NetScaler、F5、Radware和Array:优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用。

软件负载均衡:

LVS:采用persistent机制(NAT/TUN/DR),工作在网络4层之上仅作分发之用,高抗负载,易配置,稳定性强,但对网络要求较高,且不支持正则,不能做动静分离。

Nginx:采用ip_hash机制,工作在网络7层之上,网络依赖小,支持灵活正则表达,能通过端口检测到服务器内部故障,但不支持url检测,而且仅能支持http和Email。

HA-Proxy:采用balance source机制,工作在网络第4层和第7层,纯负载软件,支持虚拟主机,能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作,并且支持url检测,负载效率和并发处理优于Nginx,它跟LVS的persistent和Nginx的ip_hash一样,是让客户机访问时始终访问后端的某一台真实的web服务器。

 

2.代理缓存层

代理缓存主要部署在web server之上,当用户对网站后台发起连接请求时,用户请求先到代理缓存中去查找,如果命中,则将请求返回给用户,如果没有命中,则代理缓存将请求发到 web server,然后web sever将请求复制一份到代理缓存中,同时把请求返回给客户。常用的代理缓存有varnish和squid。

Varnish将所有的HTTP object存于一个单独的大文件中,该文件在工作进程初始化的时候,将其整个映射到内存中。这样Varnish在该块内存中实现一个简单的文件系统,具有分配、释放、修剪、合并内存等功能。其工作进程分为master进程和child进程,master进程负责初始化及fork并监控child进程,而child进程分配若干线程(Accept线程,Work线程,Epoll监听线程,Expire过期处理线程)

Squid每一台Squid代理服务器上存有若干个颗磁盘。每颗磁盘又分割成多个分区,每一个分区又可建立很多目录,目录下存放着具体的文件(object)。其通过查询表的方式来定位某个资源的位置。所查询的表有两种,一种是Hash table,一种是Digest table。Hash table记录着所有Digest table表信息,所以Hash table可以称之为目录或者提纲。而Digest table记录了磁盘上每个分区、每个目录里存放的缓存摘要,所以Digest table可以称之为摘要或者索引。所以,Squid接到请求后先查询Hashtable,根据Hash table所指向的Digest table,再查询所需要的文件。

NginxNginx已经具备Squid所拥有的Web缓存加速功能,此外,Nginx对多核CPU的利用,胜过Squid不少,现在越来越来的架构师都喜欢将Nginx同时作为“负载均衡服务器”与“Web缓存服务器”来使用。

3.Web Server

Web server的作用就是解析HTTP协议,通过用户发来请求的url地址从web服务器的文件系统中找到用户需要的HTML页面、静态文件,然后返回给用户。如果用户访问的是动态页面,则将请求转发到应用服务器(其上部署了如CGI(Common Gateway Interface), JSP, Servlets, ASP.NET,PHP脚本等)来执行。

Lighttpd一个单进程模型的web server,内存使用量很小,CPU占用率低,性能好的轻量级Web Server。支持FastCGI, CGI, 输出压缩,URL重写,Alias等重要功能。使用FastCGI方式运行php。

Apache是一款重量级的web服务器,也是世界上使用最多的web服务器,总体来讲,Apache web 服务器具有以下特性:

  (1)  支持HTTP1.1通信协议。

  (2)  支持通用网关接口。

  (3)  支持基于ip、域名、端口的虚拟主机。

  (4)  支持服务器端包含指令(ssl)。

  (5)  支持FastCGI。

  (6)  支持url重写。

Nginx使用多线程来处理请求,这使得多个线程之间可以共享内存资源,使用分阶段的内存分配策略,按需分配,及时释放,总体占用内存很小,可以支持较大的并发连接数。能够选择高效的epoll(Linux 2.6内核)、kqueue(FreeBSD)、eventport(Solaris 10)作为网络I/O模型,在高连接并发的情况下,Nginx是Apache服务器很好的替代者,因为在同样并发连接的情况下,Nginx相对 Apache占用更少的系统资源。

4.应用服务器

Tomcat

websphere

JBoss

Weblogic

GlassFish

5.服务端缓存

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。默认情况下采用名为Slab Allocator机制分配、管理内存。Slab Allocator的基本原理是将分配的内存分割成各种尺寸的块(chunk),并将尺寸相同的块分成组(chunk的集合)

6.文件服务器层

NFS:

热备DRDB+HeartBeat+NFS:

MFS:

 

自主研发分布式文件系统:

淘宝TFS

7.数据库

memcached数据缓存服务器:

Mysql主从复制,读写分离:

LVS+MySql集群:

当后面的MySQL机器超过十台时,HAProxy在这方面的性能不如LVS

水平分库设计:

垂直分区设计:

来自为知笔记(Wiz)

时间: 2024-10-10 09:15:21

高性能架构各层中间件应用及特点-个人整理的相关文章

大型网站技术架构(2):架构要素和高性能架构

上一篇我们把整个架构演变过程大致说了一下,这次我们来说说从哪方面进行考虑设计 为了使网站的能够应对高并发访问,海量数据处理,高可靠运行等一系列问题,我们可以选择横向或纵向两个方向来入手 基本思路 首先可以对整个架构进行分层,一般可以分为 应用层,服务层,数据层:实践中,大的分层结构中还可以继续分层,比如 应用层 还可以继续分为 视图层 和 业务逻辑层,服务层也可以继续细分为 数据接口层 逻辑处理层 等 通过分层,我们把一个庞大的系统切分为不同的部分,便于分工开发和维护:各层之间相互有一定的独立性

读书笔记4瞬时相应网站的高性能架构

一.概述 性能测试是性能优化的前提和基础.也是性能优化检查和度量的标准.不同的视角下网站的性能有不同的标准,也有不同的优化手段 二.性能分类 用户视觉的性能 过程:用户情况à网站通讯时间à处理时间à用户计算机浏览器解析 优化手段通过前端优化手段,通过html样式话,利用浏览器段并发和异步特性,挑战浏览器缓存,使用CDN和反向代理使浏览器尽快返回用户感兴趣数据.即使不优化应用程序和架构,也可以很大程度改善用户视觉性能 开发人员视觉的性能 关注应用程序本身及子系统的性能,包括相应延迟,系统吞吐量,并

《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

一.网站性能测试 (1)性能测试指标:①响应时间:②并发数:③吞吐量:④性能计数器: (2)性能测试方法:①性能测试:②负载测试:③压力测试:④稳定性测试: (3)性能优化策略: ①性能分析:检查请求处理各个环节的日志,分析哪个环节响应时间不合理,检查监控数据分析影响性能的因素: ②性能优化:Web前端优化,应用服务器优化,存储服务器优化: 二.Web前端性能优化 (1)浏览器访问优化: ①减少http请求:因为http是无状态的,每次请求的开销都比较昂贵(需要建立通信链路.进行数据传输,而服务

Kafka高性能架构之道

宏观架构层面 利用Partition实现并行处理 Partition提供并行处理的能力 Kafka是一个Pub-Sub的消息系统,无论是发布还是订阅,都须指定Topic.如<Kafka设计解析(一)- Kafka背景及架构介绍>一文所述,Topic只是一个逻辑的概念.每个Topic都包含一个或多个Partition,不同Partition可位于不同节点.同时Partition在物理上对应一个本地文件夹,每个Partition包含一个或多个Segment,每个Segment包含一个数据文件和一个

一篇文章,读懂Netty的高性能架构之道

一篇文章,读懂Netty的高性能架构之道 Netty是由JBOSS提供的一个java开源框架,是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果. 作为当前最流行的NIO框架,Netty在互联网领域.大数据分布式计算领域.游戏行业.通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框

大型网站技术架构(四)--网站的高性能架构

大型网站技术架构(一)--大型网站架构演化 大型网站技术架构(二)--架构模式 大型网站技术架构(三)--架构核心要素 网站性能是客观的指标,可以具体体现到响应时间.吞吐量.并发数.性能计数器等技术指标. 1.性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时间.如下列出了系统常用的操作响应时间表. 操作 响应时间 打开一个网站 几秒 数据库查询一条记录(有索引) 十几毫秒 机械磁盘一次寻址定位 4毫秒 从机械磁盘顺序读取1M数据 2毫秒 从S

Zebra 教程:数据库访问层中间件

Zebra是点评内部使用的数据库访问层中间件,它具有以下的功能点: 配置集中管理,动态刷新支持读写分离.分库分表丰富的监控信息在CAT上展现其中的三个组件的功能分别是(腾云科技ty300.com): zebra-api : 最主要的访问层中间件(勤快学qkxue.net)zebra-ds-monitor-client:基于CAT的监控(可选)zebra-dao:基于MyBatis的异步化的DAO组件(可选)编译1. git clone https://github.com/dianping/ze

构建MySQL+DRBD+Keepalived高性能架构

前言* DRBD(DistributedReplicatedBlockDevice)是一个基于块设备级别在远程服务器直接同步和镜像数据的开源软件,类似于RAID1数据镜像,通常配合keepalived.heartbeat等HA软件来实现高可用性.这里简单记录仅供参考. 一.实施环境 系统版本:CentOS 5.8 DRBD版本: drbd-8.3.15 Keepalived:keepalived-1.1.15 Master:192.168.149.128 Backup:192.168.149.1

【读书笔记】第四章 瞬时响应:网站的高性能架构

第四章 瞬时响应:网站的高性能架构 4.1 网站性能测试 4.1.1 不同视角下的网站性能 1.用户角度:网站响应速度快还是慢2.开发人员:关注系统本身及其子系统的性能,响应时间,吞吐量,并发能力,稳定性等指标.3.运维人员:关注基础设施和资源利用率,比如贷款能力,服务器配置,数据中心网络架构等. 4.1.2 性能测试指标 1.响应时间 下表是一些常用的系统操作所需要的响应时间 2.并发数:系统能够同时处理的请求数目3.吞吐量:单位时间内,系统处理的请求数量(注意与并发数区分).TPS(每秒事务