高可用性系统的集群解决方案整理
关于如何设计一个高可用性(部分节点宕机仍然保证可用)的系统,整理下大致思路。系统前端的设计中,采用比较通用的解决方案,Web服务器(如Apache)+ 应用服务器集群(Tomcat或者WebLogic)。
客户端(Client)连接Web服务器时需要考虑session的分布式管理,可以用Memcached与中间件结合提供session管理(可以扩展SessionManager或者自定义Filter来实现),为了避免Memcached服务器宕机,需要建立Memcached集群,通过magent进行代理,代理本身也支持集群,因此不需要考虑magent服务器也挂了的情况。
※ 注1:Memcached提供session管理,参考:使用memcached实现session远程分布式存储
※ 注2:Memcached作为应用的缓存层,本身设计就不实现冗余机制。参考:Memcached 集群架构问题归纳
※ 注3:magent是一款开源的Memcached代理服务器软件,使用总结: http://blog.s135.com/post/393/
※ 注4:Memcached + magent 的实现方式,参考:Memcached集群/分布式的单点故障
摘录如下
<div class="quote_div">解决方案2:采用缓存代理服务器
采用 Magent 缓存代理,防止单点现象,缓存代理也可以做备份,通过客户端连接到缓存代理服务器,缓存代理服务器连接缓存服务器,缓存代理服务器可以连接多台Memcached机器可以将每台Memcached机器进行数据同步。这样的架构比较完善了,如果其中一台缓存代理服务器down机,系统依然可以继续工作,如果其中一台Memcached机器down掉,数据不会丢失并且可以保证数据的完整性,以上描述的系统架构如图所示:
http://www.javabloger.com/images/article_pic/memcached/masd-4_s.png
页:
[1]