`
wingok
  • 浏览: 7883 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

高可用性系统的集群解决方案整理

阅读更多

关于如何设计一个高可用性(部分节点宕机仍然保证可用)的系统,整理下大致思路。

 

系统前端的设计中,采用比较通用的解决方案,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集群/分布式的单点故障

           摘录如下

解决方案2:采用缓存代理服务器
采用 Magent 缓存代理,防止单点现象,缓存代理也可以做备份,通过客户端连接到缓存代理服务器,缓存代理服务器连接缓存服务器,缓存代理服务器可以连接多台Memcached机器可以将每台Memcached机器进行数据同步。这样的架构比较完善了,如果其中一台缓存代理服务器down机,系统依然可以继续工作,如果其中一台Memcached机器down掉,数据不会丢失并且可以保证数据的完整性,以上描述的系统架构如图所示:

 

 

在系统持久层的设计方案中,为了实现高可用性,需要提供数据库集群。

这里有两个方面的考虑,首先,多台DB服务器时提供负载均衡的实现。其次,数据的备份、同步,避免一台DB服务器宕机后数据丢失。

 

※ 注1:数据库的备份同步可以通过数据库本身完成(采取区域复制或者挖掘日志),也可以通过部分第三方同步方案完成。参考:Oracle 数据库之间数据同步方案 或者 SQLServer的集群实现

※ 注2:数据库基本都有实现集群方案,如Oracle的RAC,SQLServer的MSCS等,参考:数据库集群技术分析和比较

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics