摘要:Oracle Coherence是一个企业级的分布式集群缓存框架。具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价值。本文对它的特点,架构,基本使用方法,JMX管理,调优等进行简要但快捷的介绍,并对于Hibernate的集成过程进行说明,为BOSS,CMP等移动项目提供一个的参考。
关键词:分布式缓存 Coherence
网上除了官方用户指南,关于Coherence的介绍文章资料很少,因此总结出此文,从原理到快速指南和基本最佳实践,希望对需要的人提供一个参考。
1 Coherence 概述
1.1 Coherence是什么
Oracle官方网站的描述是:Coherence 在可靠的、高度可伸缩的对等集群协议之上提供了复制的、分布式的(分区的)数据管理和缓存服务。Coherence 不存在单点故障,当某台服务器无法操作或从网络断开时,它可以自动且透明地进行故障切换并重新分布它的集群化数据管理服务。当新服务器加入或故障服务器重 启时,它会自动加入集群,Coherence 会将服务切回到该服务器,透明地重新分布集群负载。Coherence 包含网络级的容错特性和透明的软重启功能,以支持服务器自我修复。
----来自Oracle Coherence 专区
http://www.oracle.com/technology/global/cn/products/coherence/index.html
一个典型的Hibernate应用 + Coherence集群如下图所示:
1.2 Coherence的特点
1.2.1 分布式集群缓存
Coherence是一个分布式的缓存方案,并且通过集群为应用提供强大的缓存后备支持。Coherence主要是内存缓存,即存储区域主要在内存当中。
与一般的分布式缓存方案如JBossCache, Memcache 等相同,分布式缓存的价值基于网络IO性能高于DB查询的磁盘IO性能这样一个特点。
Coherence所有的设计都是基于多个(可以是非常多)的JVM,很多Coherence的测试都是使用几十甚至上百个节点来进行的。
下图展示了一个典型的WAS项目架构:WAS集群 + Near型Coherence集群架构。对于大型Web2.0网站(PHP或其他),集成Coherence也是类似的。
1.2.2自管理
Coherence使用的网络协议是TCMP ,是对UDP,TCP/IP的组合使用。Coherence能将启动的实例节点(Node)自动组成为集群(Cluster)。在一个局域网环境中,通过多播(Multicast)机制,第1个启动的Node能自动发现后启动的Node,第1,2个Node同样能发现之后启动的其他Node,依次类推,自动组成集群; 并且也能自动检测到死亡节点。集群各节点间通过单播(Unicast)机制进行数据复制,同步及发送通知消息。
Coherence集群以统一的逻辑试图对外提供缓存的读写接口,看起来使用Coherence Client就像在使用一个缓存一样。
1.2.3 自动容错和恢复
基于自管理的特点,一个Node挂掉后,集群能自动监测到,并做好死亡节点的数据恢复机制,客户端依然能正确的读出在死亡节点上存储的数据,容错和恢复对客户端来说是透明的。
1.2.4 分区缓存(Partitioned Cache)
这是Coherence与众不同的地方。一般集群如:JBossCache, Websphere 集群等,每个Node都有数据的完整拷贝,Node间通过复制来实现数据同步和一致性,一般来说采用全复制模式,即一份数据在各节点上都有一份拷贝。这种模式下,节点要存储了较多的数据,同步复制时比较消耗网络带宽。
而Coherence的分区缓存只将一个Node上的数据在另一节点上做1个备份,有效降低复制的消耗好时间,并节省内存总需求,只需复制模式的1/N (N为缓存节点个数)。
1.2.5 线性扩展
假如你的Coherence集群已经有4个Node,当系统数据量过大引起Cache容量满员,导致缓存性能下降时,可以通过启动新的Node来扩容,改善集群的性能。
这一点也是源自分区缓存技术,集群有N个Node,每个Node只存放1/N的数据,这种设计让Coherence能够处理非常多的数据,只需要通过增加节点的数量,就可以处理更多的数据。
下图为例,当两台机器,4个存储Node不够用时,通过新增机器,新增Node实例即可自动加入集群,提升Coherence缓存性能。
线性扩展更重要体现在性能上,下图展示了,Coherence集群通过增加机器,增加Node实例使得交易耗时大幅降低,而且随着集群规模呈线性下降。
1.2.6易用性
虽然上述特点看起来似乎很复杂,但那都是Coherence自己内部的事儿。对于客户端来说,与最简单的Map 操作一样,仅仅是 put(key,value), get(key) 等。
- NamedCache cache = CacheFactory.getCache("dist-cache");
- cache.put(key, value);
- Object value = cache.get(key);
正是基于以上技术和特点,Coherence成为一个高可用性,高扩展性,高性能但使用非常简单的网格型(Data Grid)分布式缓存框架。
相关推荐
### Oracle Coherence:起步与关键技术解析 #### 一、Oracle Coherence简介 Oracle Coherence是一款高性能、可扩展的分布式数据网格平台,它主要用于在多个应用服务器之间共享数据,并提供一致性和高可用性保障。...
### Oracle Coherence中文开发文档知识点解析 #### 一、引言 Oracle Coherence是一款高性能、分布式内存数据网格平台,主要用于解决大数据环境下对于实时数据处理的需求。该文档为Oracle Coherence的中文开发指南,...
Oracle Coherence是Oracle公司提供的一个可扩展的分布式缓存解决方案,旨在提供高性能的数据管理,适用于各种企业级应用。Oracle Coherence 12c (12.1.2)是该产品的一个版本,它将Oracle Coherence的优秀特性和...
Oracle Coherence是一个企业级的分布式集群缓存框架。具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价值。 压缩包里面有最新版Oracle Coherence 3.7.1,加上中文资料。
Oracle Coherence是一个企业级的分布式集群缓存框架。具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价值。本文对它的特点,架构,基本使用方法,JMX管理,调优等进行简要但...
Oracle Coherence 是一款由甲骨文公司开发的分布式数据网格解决方案,主要应用于企业级应用的高性能缓存和数据共享。在openfire集群中,Oracle Coherence扮演着关键角色,为集群提供高效的数据共享和一致性保证,...
Oracle Coherence 是一款高性能、可扩展的企业级数据网格平台,主要用于在分布式环境中管理和缓存数据。它通过减少对数据库的依赖以及提高数据访问速度来提升应用程序的性能和可伸缩性。 #### 二、Oracle Coherence...
### Oracle Coherence基础知识与原理详解 #### 一、Oracle Coherence简介 Oracle Coherence是一款高性能、分布式、可扩展的内存数据网格(In-Memory Data Grid, IMDG)平台,旨在为现代应用程序提供快速、可靠的数据...
Oracle Coherence是一款高效的企业级数据缓存系统,它为分布式应用程序提供了数据管理、缓存以及服务网格的功能。本文将深入探讨Coherence的核心特性,包括其QuickStart和编程模型,四种缓存类型,数据管理模式,与...
总结起来,Oracle Coherence 是一个强大的数据网格平台,用于处理和缓存大量数据。与 Memcached 会话管理器的集成可能为基于 Web 的应用提供了额外的灵活性和可靠性。通过深入理解和使用这些工具,开发者可以构建更...
### Oracle Coherence 系统架构详解 #### 一、引言 随着Web应用对高性能、高可用性的需求不断增加,如何优化应用服务器中的数据处理成为了一个关键问题。传统的做法是在应用服务器内部缓存数据,但这种方法容易导致...
### Oracle Coherence 教程知识点详解 #### 一、Oracle Coherence 概述 - **定义**:Oracle Coherence 是一款高性能、可扩展且具备容错能力的企业级数据网格(Data Grid)解决方案。它能够为应用程序提供分布式内存...
### Oracle Coherence 开发者指南知识点解析 #### 一、Oracle Coherence 概览 - **定义**:Oracle Coherence 是一款高性能、可扩展的内存数据网格(In-Memory Data Grid, IMDG)解决方案,旨在解决分布式环境中大...
### Oracle Coherence使用经验 #### 环境与背景 - **操作系统**: Windows 平台 - **中间件**: WebLogic Server (WLS) 11g/12c Oracle Coherence 是一款高性能的分布式数据网格解决方案,主要用于提高应用程序的可...
Oracle Coherence是一款企业级的分布式数据管理平台,主要用于提供高可用性、高性能的数据缓存和处理能力,尤其在大数据和分布式计算环境中表现出色。 该教程可能涵盖了以下几个核心知识点: 1. **Oracle ...
6. **整合能力**:作为Oracle产品栈的一部分,WebLogic Server能无缝集成Oracle数据库、Oracle Coherence缓存、Oracle SOA Suite等其他Oracle技术,提供完整的企业解决方案。 7. **部署与生命周期管理**:WebLogic ...
Coherence是Oracle公司提供的一种分布式数据管理解决方案,它主要用于实现高性能的数据缓存、数据网格和数据复制功能。在这个场景中,我们看到三个核心的JAR文件:`coherence.jar`, `coherence-work.jar`, 和 `...