- 浏览: 520519 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
我看到过这样一段文字
“
memcached如何处理容错的?
不处理!:) 在memcached节点失效的情况下,集群没有必要做任何容错处理。如果发生了节点失效,应对的措施完全取决于用户。节点失效时,下面列出几种方案供您选择:
* 忽略它! 在失效节点被恢复或替换之前,还有很多其他节点可以应对节点失效带来的影响。
* 把失效的节点从节点列表中移除。做这个操作千万要小心!在默认情况下(余数式哈希算法),客户端添加或移除节点,会导致所有的缓存数据不可用!因为哈希参照的节点列表变化了,大部分key会因为哈希值的改变而被映射到(与原来)不同的节点上。
* 启动热备节点,接管失效节点所占用的IP。这样可以防止哈希紊乱(hashing chaos)。
”
同学们,根据上面的说法,memcached其中一个节点失效以后,memcached本身是没有任何策略维持失效转发的,这对于大型系统是一个无法接受的事实。
Memcached分布式每个服务器端本身没有相互相连的关系,数据分布是由客户端来维持的,也可以说Memcached还没有为集群提供真的高可用方案,因为从集群的定义上来说需要满足:1.压力分载 2.失效转发。
在项目组中lianjie.you同学问我如果在分布式中的其中一台Memcached节点down掉了,应该如何解决?我当时愣住了,一时之间还不能给出任何完整的答案。
今早在座公车来上班的路上用手机上网Google了一下,发现原来在网上有很多人与我们有相同的问题,我Google的关键字是“Memcached 单点” 、“Memcached 单点故障”。给出的搜索结果都不算让人满意,我才打算写一篇关于解决集群中Memcached单点故障的文章。Javabloger只向大家提供2种解决 思路,暂时不提供具体代码。
现象描述:
在客户端连接的部分写入多个服务器端的ip地址,客户端将会自动的把缓存数据分布的放在每个不同的机器上,如图所示:
现象后果:
如果其中一个缓存节点的机器down机,那么客户端存入的缓存数据将会丢失一部分,就是图中红色字体描述的“Losed 33% Cache Data”,也就是说那部分数据彻底没有了!如果是用户的关键性信息那么就玩大了,如图所示:
查看大图请点击这里
解决方案1:本地备份缓存
在本地放一份缓存,同时也在分布式Memcached上放一份缓存,如果当其中一台节点当机了,客户端程序直接读取本地的缓存,本地客户端维护一个
HashMap即可,这样的方案虽然很简陋,但是可以满足一部分场景的需要,当你很急需的时候可以作为临时方案暂时替代一下。
解决方案2:采用缓存代理服务器
采用 Magent
缓存代理,防止单点现象,缓存代理也可以做备份,通过客户端连接到缓存代理服务器,缓存代理服务器连接缓存服务器,缓存代理服务器可以连接多台Memcached机器可以将每台Memcached机器进行数据同步。这样的架构比较完善了,如果其中一台缓存代理服务器down机,系统依然可以继续工作,如果其中一台Memcached机器down掉
,数据不会丢失并且可以保证数据的完整性,以上描述的系统架构如图所示:
查看大图请点击这里
还是那句话:没有任何架构是最完美的,只是最合适的,任何架构都不可能一步到位,都是经过一步一步演变过来的。
–end–
发表评论
-
Spring + iBatis 的多库横向切分简易解决思路2
2011-12-26 16:43 2081Table of Contents I. 向Co ... -
Spring + iBatis 的多库横向切分简易解决思路
2011-12-26 16:36 11641.引言 笔者最近在做一个互联网的“类SNS” ... -
tomcat端口被长时间连接,CPU使用率高的原因分析
2011-11-20 23:50 1075tomcat使用的是电脑的80端口。 当客户端访问的 ... -
Nginx+keepalived做双机热备加tomcat负载均衡
2011-10-25 16:55 1671环境说明: nginx1: 192.168.2.4 ... -
MySQL 6.0 集群(cluster)+复制(replicate)
2011-05-05 02:08 1481http://www.net5 . 简介 本 ... -
centos下MySQL主从同步配置
2011-05-05 00:38 1044一、环境 主机: ... -
HadHoop分布式框架配置(二)
2011-03-16 21:42 1161我们假定,你已经下 ... -
HadHoop分布式框架简介(一)
2011-03-16 21:42 1484分布式系统基本原理 分布式系统被设计成可以存 ... -
利用nginx+apache+mysql+php+memcached+squid搭建门户网站
2011-03-06 04:27 1486转自:http://hi.csdn.net/rushcc200 ... -
CentOS 5.3上安装Apache+php+Mysql+phpMyAdmin
2011-03-03 22:00 11121、系统下载 CentOS 开发社区已发布了新的 5.3 版 ... -
1分钟完美安装最新 CentOS + Nginx + PHP-FPM + MySQL
2011-03-03 21:58 1329PHP 5.3.1 MySQL 5.0.89 Ngin ... -
集群和数据库负载均衡的研究
2011-03-01 03:34 1761http://dadupi.blogbus.com/logs/ ... -
Memcached 集群架构问题归纳
2011-03-01 02:54 1026集群架构方面的问题 o memcached是怎么工作的 ... -
大型bbs架构(squid+nginx)实例分享
2011-03-01 01:50 1522这个架构 基于squid、nginx 和lvs等技术 , ... -
nginx图片服务器的架构方案
2011-03-01 01:44 1738图片服务 通常数据 容量较大,而且访问也频繁,鉴于此,图片 ... -
解密大中型网站架构设计来自威鹏网信息化解决方案专家。
2011-03-01 01:38 1021相信很多IT ... -
基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
2011-03-01 00:59 1512基于mod_proxy+Apache 2.2.16+Tomca ... -
揭秘全球最大网站Facebook背后的那些软件
2011-03-01 00:53 10952010年6月,Google公布全球Top 1000网站 ... -
基于nginx的tomcat负载均衡和集群(超简单)
2011-03-01 00:46 1125今天看到"基于apache ... -
Lighttpd 的安装配置
2011-03-01 00:20 1206lighttpd(http://lighttpd.net/ ...
相关推荐
在Memcached中,集群允许将数据分发到多个服务器,以扩展存储容量并减少单点故障。 在“压缩包子文件的文件名称列表”中提到的“tomcat与memcached集群需要的jar”,这通常包括以下组件: 1. **Memcached客户端库*...
在构建高可用性和可扩展性的Web服务时,集群和会话共享是两个关键点。这里我们讨论的主题是如何通过Nginx、Tomcat和Memcached来...这种架构在处理高并发访问时尤为有效,同时降低了单点故障的风险,提高了用户体验。
标题中的“tomcat7 memcached集群”指的是在Tomcat 7这个流行的Java应用服务器中,利用memcached构建的分布式缓存系统,以实现session共享。Session共享是Web应用程序中的一个关键概念,它允许用户在不同服务器之间...
在实际应用中,还需要考虑安全性、容错性和性能优化等方面的问题,例如,定期备份Memcached数据,防止单点故障;使用SSL加密传输Session数据,防止数据泄露;监控和调整Nginx和Memcached的性能参数,确保系统的高效...
2. **负载均衡**:通过轮询、最少连接数等策略,Nginx可以将请求均匀地分发到多个Tomcat实例,避免单点压力过大。 3. **缓存**:Nginx还可以缓存静态资源,减轻后端服务器的压力。 **Tomcat** Tomcat是Apache软件...
通过设置反向代理,Nginx 可以实现负载均衡,将流量分发到多个 Tomcat 实例上,避免单点故障,提高系统的整体处理能力。同时,Nginx 还可以缓存一些静态资源,减轻后端服务器的压力。 Tomcat 是基于 Java 的应用...
在Java Web应用中,结合memcached进行session共享可以有效地支持负载均衡,确保用户体验的一致性,同时避免了单点故障的风险。 总结来说,memcached session共享是解决分布式环境中会话一致性问题的有效方法。通过...
然而,Memcached的这种设计也带来了单点故障的风险,为确保高可用性,通常采用缓存备份策略,即在多个节点上保存相同的数据。 在Java开发中,有多种Memcached客户端可以选择。官方提供的Memcached Client for Java...
- 降低单点故障:如果某台Tomcat服务器宕机,session数据不会丢失,因为它们在memcached中是持久化的。 然而,这种方式也存在一些潜在的问题: - 安全性:session数据在内存中存储,如果memcached被攻击,可能会...
- **负载均衡**:为了应对高并发访问,谷粒商城采用了负载均衡技术,如Nginx或HAProxy,将用户请求分发到多个服务器,避免单点过载。 - **分布式数据库**:通过分库分表策略,如ShardingSphere,解决大数据量下的...
4. **分布式缓存**:在Tomcat集群中,使用Memcached作为分布式缓存,可以确保所有服务器实例都能访问相同的数据,提供一致的服务,并且当某个节点故障时,其他节点仍能继续提供服务。 5. **性能优化**:通过使用...
在分布式架构中,负载均衡是关键一环,豆瓣可能采用了如Nginx等负载均衡器来分散用户请求,确保单点故障不会影响整体服务。数据库层面,他们可能实施了主从复制或者分片策略来提高读写性能,同时利用缓存技术(如...
- **面试题**:如何解决Memcached的单点故障问题?Memcached如何进行数据备份? 2. **Redis**: - **简介**:Redis是一个开源的、高级的键值存储系统,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等...
5. 故障容忍性(Fault Tolerance):分布式系统需要有能力在部分组件发生故障时继续提供服务,系统对单点故障的依赖性越低越好。 二、分布式系统的抽象与模型 分布式系统需要使用抽象和模型来简化复杂的分布式操作...
通过将工作负载分配给多个资源,可以防止单点故障,提高整体性能。常见的负载均衡策略包括轮询、最少连接数和IP哈希等。 【容错和故障恢复】 在分布式系统中,故障是不可避免的。因此,了解如何设计容错机制和实现...
分布式部署是大型系统或高并发环境下的常见解决方案,它可以将负载分散到多个服务器上,降低单点故障的风险,同时提高服务的响应速度。 分布式Tomcat的实现通常涉及以下几个关键知识点: 1. **负载均衡**:通过...
虽然分布式缓存可能会有数据传播的损耗,但 Memcached 的集中式缓存模式在实现简单备份后,可以有效地解决单点故障问题。 计数器功能是 Memcached 的一个重要特性,特别是在访问控制场景中。Memcached 提供了原子性...
Redis通过客户端实现分布式读写,支持主从复制,但每次从节点连接主节点时需要整个数据集的快照,没有增量复制功能,因此在单点故障问题上处理起来较为复杂。而Memcached本身不具备数据冗余机制,但使用成熟的hash...
3. **Memcached集群**:当单个Memcached实例无法满足需求时,可以搭建Memcached集群以扩展存储能力。集群笔记可能包含如何配置多个节点、数据分片策略和故障转移等关键信息。 4. **PHP与Memcached集成**:PHP通过...
这种解决方案不仅提高了系统的可扩展性,还降低了单点故障的风险。在实际操作中,还可以根据具体需求进行更复杂的配置和优化,例如使用一致性哈希算法进行负载均衡,或者结合Redis等其他缓存系统来进一步提升性能。