如图,这是一个最简洁的架构。
在这个架构里,负载均衡器都可以省了,用最为廉价的dns来替代,dns的优点就是廉价,不用维护,也不愁性能和稳定,还可以跨机房多用几条带宽作分流。另外,在图片服务中,可以选择用另一个域名做dns。优点是主站中的任何cookie等header不会带到图片服务中,省了不少上传流量和服务器可能有的处理时间;缺点是多花了点域名的钱。目前门户都喜欢用这办法,小站用的话,用另一个域名还附带有一个特别的优点:因为部分域名服务商允许添加的二级域名有限,所以用别的域名可以节约有限的域名资源。dns这一块也可以用泛域名,不过貌似国内的泛域名支持不是特别的稳定,有些网站的泛域名,在linux下不能解析windows就正常,比较奇怪,我也没法解释。
在这个架构里我总共开了36个域名,但是一时没有那么多机器,所以有一些域名指向同一台机器。一般来说,一个刚上线的项目,放一台机也未尝不可,但是链接(包括域名)一定要固定下来,不然以后调整会非常痛苦。
域名的事情还是比较简单的,只要照着填写web表单就完成了,配置四台nginx服务器当然也是非常简单的,因为不需要什么特殊的功能,所以四台机用同一个配置,写一个root根目录和expires就完成了。expires可以大胆地配置一年expires 1y,或10y甚至expires max都没什么问题,因为假如客户端认为图片有误,他会按F5刷新,F5会跳过expires向服务器发送if-modified-since头,和服务器的源文件修改时间对比,假如一样,服务器返回一个304表示没有更新,否则会重新下载该图。
在这个架构里难处在于分发和管理图片,所以hash结构比较适合于在论坛、博客等用web浏览器上传的场合使用。用浏览器上传图片后,只需要用动态语言创造一个hash的文件地址,保存在上传机器上,然后使用rsync分发到四台图片服务器就可以了。在我这个架构里分了36个字母和数字,是给md5编码用的,md5图片存档地址可类似/7/5/2/23AE809DDACAF96AF0FD78ED04B6A265E05AA257.jpg,这样这张图片就会分配到这个架构的第4台机器。有些系统的图片是用当前时间或自动ID算出来的,hash结构可为图片ID%100叫求余数,相应的dns配置为纯数字就可以了,hash办法可以很多样,最紧要就是图片量要分得均匀,点击量不均匀倒是其次。删除的时候也不难办,给定一个图片地址,就很容易知道它在哪台机器,然后在这个地址写一个空文件,用rsync同步到图片服务器。
假如不是web浏览器上传的图片,而是用ftp上传的,就不适合使用这个架构,强行使用这个架构的话头还是自己的疼啊,可以使用这个架构试试,不久的将来我会再写一个最简单的架构。hash架构也有一个要命的缺点,就是这几台机器的硬盘虽然都不容易满,但是都快满的时候(它们一般是同时满的),就得为每台机都增加硬盘空间或增加一倍的服务器。
在这个最简单的hash架构上,没有设计任何保护措施,所以有一台服务器硬盘损毁,会造成1/4的图片无法访问;同时也先不讨论数据备份的问题。简单有简单之美,复杂的事情留待高人解决。
--------------------------------------------------------------------------------
分享到:
相关推荐
图片服务器的Hash架构是一种优化大型图片服务系统的解决方案,旨在应对高访问量和大容量存储的需求。在这种架构中,Hash函数用于将图片URL映射到特定的服务器,从而实现负载均衡和有效的缓存策略。 首先,我们需要...
url hash架构对url进行一次hash算法,然后通过hash结果找到对应的服务器。因为针对单一个url的hash结果是一样的,所以理论上这个url会被永久分配到固定的一台服务器上。另外因为经过了hash算法,所以分配url就很均匀...
### 图片服务器URL Hash架构详解 #### 一、引言 随着互联网的发展,图片服务器面临着巨大的访问量和存储容量挑战。传统的负载均衡方法虽然能在一定程度上分散访问压力,但对于存储容量的问题却无能为力。这导致了...
### Nginx服务器详细部署及部署架构 #### 一、Nginx服务详细部署 **1. CentOS 6.6 系统部署方案** - **Nginx 部署**:在 CentOS 6.6 系统上安装 Nginx 通常包括几个步骤:下载并编译 Nginx 源码包、配置编译参数...
《服务器系统架构分析》 服务器系统架构是软件开发中至关重要的一环,它关乎到系统的性能、稳定性和可扩展性。本文将围绕一个基于Squid、Nginx和LVS等技术构建的服务器架构进行详细解析,探讨其设计原则和优势。 ...
通过Nginx的手工URL_hash策略,将需要频繁清除缓存的帖子页面和列表页面分发到不同的Squid服务器,减少了Purge指令的压力。专门的Purge Nginx服务器负责接收和执行清除缓存的指令,确保高效且精准的缓存管理。此设计...
在Linux环境下进行C/C++后端服务器架构开发是一项复杂而关键的任务,涉及到多方面的技术知识。本课程主要涵盖了以下几个核心领域: 1. **精进基石**:这部分内容强调基础扎实的重要性,包括深入理解数据结构与算法...
【服务器系统架构分析】 本文主要探讨了一种基于Squid、Nginx和LVS等技术构建的服务器系统架构,该架构旨在实现高性能、高保障度和高可用性。以下是该架构的关键点和优势的详细解释: 1. **高性能**: - 通过前端...
高性能高并发服务器架构是互联网行业中一个至关重要的领域,它涉及到如何设计和构建能够处理大量并发请求,保持高效响应,并在高负载下依然稳定运行的服务器系统。以下是对这个主题的详细探讨: 首先,初创网站与...
文章提出了一个基于Zookeeper、Redis和MongoDB分片机制的新分布式服务器架构,并通过改进一致性Hash算法优化Redis缓存架构,同时优化MongoDB的负载均衡。 首先,虚拟现实环境中的数据处理需求巨大,对实时性和稳定...
服务器高并发分布式架构演进 服务器高并发分布式架构演进是指在网站的发展过程中,如何设计和优化服务器架构以满足日益增长的用户数和访问量。该架构演进可以分为七个阶段,每个阶段都针对特定的性能瓶颈和问题,...
对于PC平台,由于硬件资源相对丰富,但可能与MySQL服务器的架构不同,例如在x86平台上编译运行在ARM平台的MySQL,这就需要进行交叉编译。交叉编译是指在一种体系结构的机器上构建另一种体系结构的软件。在这个过程中...
例如,当我们需要在多台服务器间分配缓存数据时,传统的基于模运算的哈希方法(如 `h = Hash(key) % N`)在面对服务器数量变动时表现不佳。这是因为当服务器数量发生变化时(例如添加或移除服务器),大量的键值对...
在现代互联网架构中,随着业务规模的增长和技术的发展,单台服务器往往难以满足大量用户访问的需求。因此,负载均衡技术应运而生,它能够有效地分散访问请求到多台服务器上,提高系统的可用性和响应速度。Nginx作为...
在互联网服务中,nginx作为一款高性能的HTTP和反向代理服务器,广泛应用于各种复杂的网络架构中。为了满足动态负载均衡的需求,nginx提供了丰富的upstream模块,其中,nginx_upstream_hash模块是其一,它允许我们...
3. **X86散列算法**:描述中的“x86散列算法”可能指的是MurmurHash3的x86架构优化版本。这意味着代码可能针对Intel和AMD等x86处理器进行了优化,以提高计算速度。 4. **浏览器与服务器兼容性**:JavaScript实现的...
"ngx_http_consistent_hash-master.zip" 是一个与 Nginx Web服务器相关的压缩包文件,其中包含了一个名为 "ngx_http_consistent_hash" 的第三方模块的源代码。"master" 指示这可能是该模块的主分支或最新版本。 **...
在IT行业中,服务器的网络冗余和性能优化是至关重要的,而Bonding(绑定)技术就是其中的一种解决方案。本文将详细讲解如何在...在实际环境中,根据服务器需求和网络环境选择合适的工作模式,可以更好地优化网络架构。