概念:
集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。
集群技术是一种通用的技术,其目的是为了解决单机运算能力的不足、IO能力的不足、提高服务的可靠性、获得规模可扩展能力,降低整体方案的运维成本(运行、升级、维护成本)。Cluster必须可以协调管理各分离的组件的错误和失败,并可透明地向Cluster中加入组件。一个Cluster包含多台(至少二台)拥有共享数据存储空间的服务器。任何一台服务器运行一个应用时,应用数据被存储在共享的数据空间内。每台服务器的操作系统和应用程序文件存储在其各自的本地储存空间上。Cluster内各节点服务器通过一内部局域网相互通讯。当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。当一个应用服务发生故障时,应用服务将被重新启动或被另一台服务器接管。当以上的任一故障发生时,客户都将能很快连接到新的应用服务上。
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。
问题:
当一个应用部署在集群环境下的不同节点上并行运行时,每个服务器节点都是单独缓存。这样就很容易导致不同节点的缓存内容出现版本上的不一致。一台机器上修改了数据只会影响到本地的内存,但不会通知其他服务器,导致其他节点的缓存数据实际已经失效了。这样就必须实现在集群环境下保持缓存同步。
当原先为用户创建session的服务器崩溃了,出错恢复允许用户无缝地从另一台server上获得session信息。
实现:
用数据库/文件系统实现
当集群中的一台server上的应用更新时,更新的部分写入数据库,然后缓存管理器把所有机器上的缓存设为无效,强迫它们下次重新获取新的。只有一个缺点,就是要花时间把数据从数据库或共享的文件系统中取出,调入内存中。
用数据库/文件系统实现session持久性的主要缺点在于:当存储大的或很多对象在session中时有限的伸缩性。用户每次向HttpSession增加一个对象,session中所有的对象都要序列化并写入数据库或共享的文件系统。大多数用数据库实现session持久化的application server都主张尽量少用session存储object,但这会限制Web application的结构和设计,特别是用HttpSession存储用户数据时。
基于内存的实现
把内存中的信息写到一个备份服务器上。有两种做法:第一种把信息写到一个集中式状态服务器,集群中的所有机器都要把数据写到这台server上;第二种是集群中每个节点任意地选择一个节点作为backup server,将存储在内存中的数据单独序列化写入那台backup server。
上面两种方法中,如果集群中的机器数较少,用专门的state server比任意指定backup server要好,这样可以节省CPU来处理transaction和动态网页的生成。另一方面,当集群的机器数很大时,专门的state server就成为瓶颈,而向任意指定的backup server复制内存的消耗将随着机器数的增长而线性增长。当增加机器时用专门的state server,你需要为它加上更多的RAM和CPU。用任意指定的backup server你仅仅增加机器而已,信息会平均地分布在所有机器之间。基于内存的持久化提供了灵活的Web application设计规模和高可靠性。
分享到:
相关推荐
利用redis广播消息更新集群环境下本地缓存,包含说明和代码。 在软件系统开发中,有时需要将系统元数据放在数据库中,使用时再从数据库中查询。为避免频繁访问数据库,提升系统性能,需要将更新不频繁的数据放到本地...
Memcache集群环境下缓存解决方案.docx
MapCache是纯JAVA写的,用的HashMap来缓存数据,用的RMI来同步数据。支持某台服务器关闭后启动着的服务器自动将切换成单机状态,支持关闭的服务器重启后马上能同步更新已存在的数据并将缓存切换成同步状态,支持为...
Linux环境MinIO单机安装、集群搭建,数据同步,策略示例。 超详细,一步步学会并启动
Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步
缓存、redis安装、redis单机和集群、jedis单机和集群、jedis与spring整合、缓存逻辑、缓存同步、
FH151-1228 集群环境下实现异步交互模式通信的系统及方法,主要讲述了一中异步交互模式-AIM的实现原理。 注:文档已申请专利。
MapCache是纯JAVA写的。支持某台服务器关闭后启动着的服务器自动将切换成单机状态,支持关闭的服务器重启后马上能同步更新已存在的数据并将缓存切换成同步状态,支持为缓存设置过期时间
对了解数据库缓存有很大的帮助,,包含ngix redis等技术
IHS集群环境下多应用配置,比较不错的例子,可供参考
quartz在集群环境下的最终解决方案quartz在集群环境下的最终解决方案
集群环境下并行编程环境研究.pdf集群环境下并行编程环境研究.pdf集群环境下并行编程环境研究.pdf
Windows环境下Redis集群的搭建,非常详细的介绍了搭建的步骤、每一步的命令等。 包括Ruby环境的搭建,还有客户端如何连接集群。
即使EhCache提供了集群环境下的缓存同步策略,但是同步依然需要一定的时间,短暂的缓存不一致依然存在。 在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个...
spring实现集群同步锁
memcached缓存安装使用说明,包含windows和linux的安装和使用 集群
Spark集群及开发环境搭建,适合初学者,一步一步并配有截图。 目录 一、 软件及下载 2 二、 集群环境信息 2 三、 机器安装 2 1. 安装虚拟机VirtualBox 2 2. 安装CentOs7 2 四、 基础环境搭建(hadoop用户下)...
GitOpsKubernetes多集群环境下的高效CICD实践.pdf
ehcache集群同步配置实例加说明文档
2020-02-10 王争设计模式之美进入课程讲述:冯永吉时长 10:21大小 8.31M上两节课中,我们针对单例模式,讲解了单例的应用场景、几种常见的代码实现