在一个分布式系统中,用户访问量是相当大的。在系统运行过程中,用户会频繁请求、访问一些数据,其中大部分只进行只读处理,这些数据就被称为热点数据。显然,应用服务器对数据库中的数据进行访问会在一定程度上增大数据库的压力,使得系统的性能有所降低,而这两个负面影响在对热点数据的访问上显得尤为突出。为了降低应用服务器对数据库的访问频率,减轻数据库压力,提高系统性能,于是就出现了缓存的概念。在高并发的企业级应用系统中,缓存一般介于应用服务器和数据存储之间,通常情况下,缓存数据一般是放置在应用服务器内部,通过类似于静态变量的方式来实现。但是,这种方式会占用服务器内存,而且在应用服务器集群化部署的情况下,无法保证缓存之间的一致性,因此其实并不适用于大型应用。
在银行领域,信息系统产生和存储了大量的业务数据、访问记录等,随着互联网应用的日益增多,频繁的数据读写将给系统带来巨大的负载压力。为了解决这一问题,利用第三方化的思想,将缓存作为独立的中间件提供集群化的实现,通过降低应用服务器和缓存之间的耦合来完成,这就是分布式缓存。目前,它主要用于这几类应用场景:页面缓存、应用对象缓存、状态缓存、并行处理、事件处理和极限事务处理。
分布式缓存提供的数据可以分配在大量独立运行的物理机中,也就是说分布式缓存所管理的机器就是一个集群,它负责维护这个集群中成员列表的更新,并执行各种操作。分布式缓存设计通常考虑四个关键点,分别是分区、负载均衡、位置透明性和故障切换。
1)分区:数据分配存放在各个服务器上,不会有两台及以上服务器来维护同一段数据的缓存,即缓存大小与相关处理能力可以随着集群大小线性增长。换言之,数据的操作可以通过“单跳”来完成,即这个过程最多涉及两台服务器。(www.xing528.com)
2)负载均衡:管理数据,让数据均匀分布在各服务器上。
3)位置透明性:虽然数据散布于集群内各个节点上,但访问数据所用的API(应用程序编程接口,Application Programming Interface)完全相同,且每个API方法提供的行为也相同,这就意味着开发人员无需根据缓存的拓扑进行编码。
4)故障切换:当有一个成员发生故障时,其他成员仍可以继续处理该数据。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。