- 浏览: 506280 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 2023Table of Contents I. 向Co ... -
Spring + iBatis 的多库横向切分简易解决思路
2011-12-26 16:36 11341.引言 笔者最近在做一个互联网的“类SNS” ... -
tomcat端口被长时间连接,CPU使用率高的原因分析
2011-11-20 23:50 1034tomcat使用的是电脑的80端口。 当客户端访问的 ... -
Nginx+keepalived做双机热备加tomcat负载均衡
2011-10-25 16:55 1620环境说明: nginx1: 192.168.2.4 ... -
MySQL 6.0 集群(cluster)+复制(replicate)
2011-05-05 02:08 1459http://www.net5 . 简介 本 ... -
centos下MySQL主从同步配置
2011-05-05 00:38 1017一、环境 主机: ... -
HadHoop分布式框架配置(二)
2011-03-16 21:42 1124我们假定,你已经下 ... -
HadHoop分布式框架简介(一)
2011-03-16 21:42 1442分布式系统基本原理 分布式系统被设计成可以存 ... -
利用nginx+apache+mysql+php+memcached+squid搭建门户网站
2011-03-06 04:27 1445转自:http://hi.csdn.net/rushcc200 ... -
CentOS 5.3上安装Apache+php+Mysql+phpMyAdmin
2011-03-03 22:00 10801、系统下载 CentOS 开发社区已发布了新的 5.3 版 ... -
1分钟完美安装最新 CentOS + Nginx + PHP-FPM + MySQL
2011-03-03 21:58 1295PHP 5.3.1 MySQL 5.0.89 Ngin ... -
集群和数据库负载均衡的研究
2011-03-01 03:34 1708http://dadupi.blogbus.com/logs/ ... -
Memcached 集群架构问题归纳
2011-03-01 02:54 997集群架构方面的问题 o memcached是怎么工作的 ... -
大型bbs架构(squid+nginx)实例分享
2011-03-01 01:50 1495这个架构 基于squid、nginx 和lvs等技术 , ... -
nginx图片服务器的架构方案
2011-03-01 01:44 1708图片服务 通常数据 容量较大,而且访问也频繁,鉴于此,图片 ... -
解密大中型网站架构设计来自威鹏网信息化解决方案专家。
2011-03-01 01:38 984相信很多IT ... -
基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
2011-03-01 00:59 1483基于mod_proxy+Apache 2.2.16+Tomca ... -
揭秘全球最大网站Facebook背后的那些软件
2011-03-01 00:53 10662010年6月,Google公布全球Top 1000网站 ... -
基于nginx的tomcat负载均衡和集群(超简单)
2011-03-01 00:46 1080今天看到"基于apache ... -
Lighttpd 的安装配置
2011-03-01 00:20 1173lighttpd(http://lighttpd.net/ ...
相关推荐
NULL 博文链接:https://yuhuiblog695685688425687986842568269.iteye.com/blog/2216531
分布式缓存,跨平台,高性能MemCached
memcached分布式工具,集群部署,memcached分布式工具
MemCached高性能分布式的内存对象缓存系统应用说明[收集].pdf
memcached集群搭建,包含淘宝月光宝盒架构
memcached是高性能的分布式缓存服务器,用来集中缓存数据库查询结果,减少数据库访问次数来提高动态web应用的响应速度,官方网站:http://memcached.org/。
tomcat + apache + memcached 集群jar包
Memcached分布式缓存简介Memcached分布式缓存简介Memcached分布式缓存简介
memcached 大家相互学习, ---
Memcached集群搭建 操作详细 包含安装memcached单实例和集群操作的详细文档
Memcached是一个高性能的分布式的内存对象缓存系统.它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力...
Memcached分布式缓存
memcached单机到集群完整搭建过程
http://downloads.sourceforge.net/repcached/网站已被GFW 留给需要做memcached集群配置和单点恢复的同学
memcached完全可以用到其他地方 比如分布式数据库,分布式计算等领域。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。 2.Memcached工作机制 通过在内存中开辟一块区域来维持一个大的hash表...
memcached全面剖析–4. memcached的分布式算法.txt
关系型数据库(MySQL)、NOSQL数据库(MongoDB)、缓存(Redis,Memcached)/ 分布式消息中间件: ActiveMQ、 RabbitMQ、RocketMQ/ 分布式RPC框架: Dubbo(SOA服务治理)/ 集群部署: Nginx集群、Tomcat集群、...
Nginx+Tomcat+Memcached集群Session共享实例,Nginx 1.81 + tomcat1 + tomcat2 + Memcached 完整可运行 访问根目录下 test.jsp 可看效果
作为PHP开发人员,我们一般能想到的方法有页面静态化处理、防盗链、CDN内容分发加速访问、mysql数据库优化建立索引、架设apache服务器集群()、还有就是现在流行的各种分布式缓存技术:如memcached/redis;...