3.1、Web系统集群复制

浏览: 10 2018年10月20日
还记得前面我们提到的图片服务器吗?当时我们采用 NFS 的方式将它映射到多台 Web 服务器上,而在这里,我们希望将图片服务器上的照片文件复制到集群中的每一台 Web 服务器上,如下图所示。这样一来,Web 服务器将可以直接读取本地磁盘的图片来响应用户的 HTTP 请求,这意味着只要 Web 负...

web系统架构之内容分发和同步

浏览: 19 2018年10月16日
的确,利用 NFS 等共享文件系统可以帮助我们在多台服务器之间共享文件,但是在这种机制下,不论是性能还是可用性,都无法达到更高的要求,更关键的是,共享文件系统本身就是一个不强调扩展的概念,它更像一个中央集权的统治体系,最终将成为制约发展的罪魁祸首。中央集权是相对于地方分权而言,其特点是地方政府在...

web系统高可用性

浏览: 25 2018年10月12日
对于一些关键的 Web 应用,可用性至关重要,为了实现高可用性的系统,我们不能容忍任何的单点故障,即便只是偶然。所谓的单点故障,是指系统中一旦某个组件发生故障,便会导致整个系统的失败,所以这种故障是致命的。在负载均衡系统中,多台实际服务器在分散开销的同时,本身也提高了实际服务器的可用性,一般来说...

负载均衡之IP隧道

浏览: 49 2018年10月02日
与 LVS-DR 的原理非常类似,基于 IP 隧道(IP Tunneling)的负载均衡系统同样可以用 LVS 来实现,也称为 LVS-TUN。与 LVS-DR不同的是,实际服务器可以和调度器不在同一个 WAN 网段,调度器通过 IP 隧道技术来转发请求到实际服务器,所以实际服务器也必须拥有合法...

ipvsadm命令配置LVS-DR集群

浏览: 44 2018年09月29日
我们接着上一章节讲解。LVS-DR接下来,我们在作为调度器的服务器上通过 ipvsadm 命令进行以下配置:ipvsadm -A -t 125.12.12.77:80 -s rripvsadm -a -t 125.12.12.77:80 -r 125.12.12.20:80 -gipvsadm ...

将实际服务器接入外部网络(IP别名的作用)

浏览: 50 2018年09月25日
我们在上一章节知道了 IP 别名是怎么回事了,那么,它有什么用呢?刚才我们说到,调度器通过修改数据包的目标 MAC 地址,将它转发给实际服务器,注意,它并没有修改目标 IP 地址,那么一旦数据包到了实际服务器后,发现实际服务器的 IP 地址并不是数据包的目标 IP 时,你也许无法想象会发生什么事...

直接路由

浏览: 67 2018年09月19日
不同于 NAT 机制,直接路由方式下的负载均衡调度器工作在数据链路层(第二层),简单地说,它通过修改数据包的目标 MAC地址,将数据包转发到实际服务器上,并且最重要的是,实际服务器的响应数据包将直接发送给用户端,而不经过调度器。这听起来似乎不可思议,响应数据包可以不经过调度器,这意味着什么呢?可...
DNS 负载均衡

DNS 负载均衡

浏览: 719 2018年06月14日
我们知道,DNS 负责提供域名解析服务,当我们访问某个站点时,实际上首先需要通过该站点域名的 DNS 服务器来获取域 名指向的 IP 地址,在这一过程中,DNS 服务器完成了域名到 IP 地址的映射,同样,这种映射也可以是一对多的,这时候, DNS 服务器便充当了负载均衡调度器(也称均衡器) ,...
HTTP 重定向

HTTP 重定向

浏览: 606 2018年06月06日
对于 HTTP 重定向,你一定不陌生,它可以将 HTTP 请求进行转移,在 Web 开发中我们经常会用它来完成自动跳转,比如用户登录成功后跳转到相应的管理页面。这种重定向完全由 HTTP 定义,并且由 HTTP 代理和 Web 服务器共同实现。很简单,当 HTTP 代理(比如浏览器)向 Web服...

负载均衡的一些思考

浏览: 476 2018年06月03日
对于 Web 站点的水平扩展,负载均衡是一种常见的手段,在介绍负载均衡的多种实现方法之前,我们先来思考一些问题。 我们先将目光转向一个类比的例子,假如某公司有一个小型团队,需要承担一定的工作量,开始的时候,大家各尽其能,非 常轻松地就可以完成工作,不亦乐乎。但是,随着公司的发展,这个团队的工作量...
WEB 负载均衡

WEB 负载均衡

浏览: 393 2018年06月01日
回顾前面的内容,似乎一直都在回避 Web 规模扩展这个问题,因为我担心过早实施扩展会迷惑我们优化性能的意志。当然, 在有些时候进行扩展是显而易见的,比如下载服务由于带宽不足而必须进行的扩展,但是,另一些时候,很多人一看到站点 性能不尽如人意,就马上实施负载均衡等扩展手段,真的需要这样做吗?当然这...
缓存扩展

缓存扩展

浏览: 483 2018年05月22日
有很多理由让我们不得不扩展 memcached 的规模,包括并发处理能力和缓存空间容量等,不论是哪个方面达到极限,扩展都 在所难免。 对于缓存空间的容量,扩容意味着增加服务器物理内存,这显得不切合实际,而对于并发处理能力,我们知道,memcached已经在这方面做了很大的努力,这也是它成名的前提...

监控状态

浏览: 492 2018年04月08日
作为一个分布式缓存系统,memcached 可以非常出色地完成你交给它的工作,但这并不代表你可以对它放任不管,相反,我 们需要知道它的运行状况。memcached 提供了这样的协议,可以让你获得它的实时状态,我们通过 PHP 扩展可以十分容易地 做到。 以下的代码片段用来获取 memcached...

写操作缓存

浏览: 575 2018年04月03日
对于一个数据库写操作频繁的站点来说,通过引入写缓存来减少写数据库的次数显得至关重要。我们知道,通常的数据写操 作包括插入、更新、删除,这些操作又同时可能伴随着条件查找和索引的更新,所以它们的开销往往会令人望而生畏直接更新 下面我们来看一个有趣的例子,就拿站点访问量统计功能来说,我们需要记录每个 ...
读操作缓存

读操作缓存

浏览: 512 2018年04月01日
前面简单介绍了 memcached 的一些基本特性,因为它实在是家喻户晓,以至于我觉得不需要太多详细地介绍它本身,否则你 会觉得我在浪费你的时间,好,我们还是来看看如何用它来帮助站点提高吞吐率,这也许是你最关心的。 还记得磁盘缓存区中的两部分吗?没错,读缓存区和写缓存区。那么我们也按照这个思路,...

使用 memcached

浏览: 563 2018年03月24日
幸运的是,开源社区已经有非常成熟的分布式缓存系统,现如今,几乎没有人不知道 memcached,我们也曾经在前面使用过 memcached 来存储动态内容的页面缓存。可是,你真的能让它工作得愉快吗Key-value首先,我们要知道,为了实现高速缓存,我们不会将缓存内容放置在磁盘上,否则将毫无意义...
数据库的前端缓存区

数据库的前端缓存区

浏览: 593 2018年03月22日
还记得我们曾经介绍过的文件系统内核缓冲区(Buffer Area)吗?它位于物理内存的内核地址空间,除了使用 O_DIRECT 标 记打开的文件之外,所有对磁盘文件的读写操作都要经过它,所以你也可以把它看成是磁盘的前端设备。 这块内核缓冲区也称为页高速缓存(Page Cache),实际上它包括以...
构建高性能WEB站点(1):分布式缓存

构建高性能WEB站点(1):分布式缓存

浏览: 523 2018年03月06日
说到缓存,你已经非常熟悉了,我们前面曾经探讨了有关动态内容的各种缓存,但基本上都是基于页面缓存,或者整体缓存, 比如缓存整个动态图片。无论如何,它们的目的都在于避免重复的慢速计算,比如数据库访问。但是在有些时候,使用页面 缓存显得尤为笨重,这可能来自于以下几个原因:一个网页中不同区域的内容,自身...