coherence
Coherence是Oracle为了建立一种高可靠和高扩展集群计算的一个关键部件,集群指的是多于一个应用服务器参与到运算里。Coherence的主要用途是共享一个应用的对象(主要是java对象,比如Web应用的一个会话java对象)和数据(比如数据库数据,通过OR-MAPPING后成为Java对象)。 简单来说,就是当一个应用把它的对象或数据托管给Coherence管理的时候,该对象或数据就能够在整个集群环境(多个应用服务器节点)共享,应用程序可以非常简单地调用get方法取得该对象,并且由于Coherence本身的冗余机制使得任何一个应用服务器节点的失败都不会影响到该对象的丢失。其实如果不使用coherence,对于一个会话在多个应用服务器节点的共享一般是通过应用服务器本身的集群技术,而Coherence的创造者则认为基于某种应用服务器技术的集群技术来共享会话变量的技术并不完整,而专门开发出Coherence这个产品(原来称为tangosol)并且最后被Oracle收购,这个产品既有原来各种应用服务器集群所具有的各种技术特点,而且又增加了原来各种应用服务器集群技术所没有的各种特性。
要学习这个产品,需要记住并注意的一点是:Coherence所有的设计都是基于多个(可以是非常多)的JVM,很多Coherence的测试都是使用几十甚至上百个节点来进行的。
Coherence的一些技术特点
Coherence产品首先是被设计用于高扩展性:
所谓高扩展性就是当一个应用服务器能够处理2000笔交易,则10个应用服务器应该能够处理20000笔交易。
一般而言,整个应用架构的扩展性由架构里的最不能扩展的部位(称之为瓶颈)决定,这个瓶颈一般而言都是数据源的处理,Coherence针对这种理解提供了应用层的数据共享缓冲,任何一个时候如果应用能够从这个数据缓冲里满足要求,则不会将请求发给数据源,从而极大地增强一般的瓶颈(数据)的扩展性。
为了加强数据的写处理性能,Coherence还设计了延迟写的功能,就是应用的写会先缓存在Coherence的缓冲区,然后延迟写到数据库里,为了减轻数据源的写压力,Coherence只把最近的更改写到数据源,比如一条数据被更改了多遍,则只有最后的更改会被提交到数据源。而且,如果可能,多个SQL语句会被变成一个SQL语句批,一次提交给数据源,这样又极大地降低了对数据源的压力。
一个典型的使用Coherence的架构图是:
Coherence的第二个非常重要的特地是支持数据的分区处理,就是如果有N个处理节点,则每个节点只管理1/N的数据,当一个节点失效时,该节点的数据会在剩下的节点均分,每个节点将管理1/(N-1)的数据。同样的,当一个节点增加进来时,则每一个节点都会分配一部分数据给新的节点,则最终每个节点只管理1/(N+1)的数据。大家知道,一般应用服务器的集群都有只能缓冲共享2G java对象的缺点,而Coherence这种设计让Coherence能够处理非常多的数据,只需要通过增加节点的数量,就可以处理更多的数据。
如果安装了Coherence,则应用服务器不需要配置专有的服务器集群技术,因为Coherence*web模块提供了可用于处理http会话信息在Coherence集群内共享的功能,当一个节点需要读取HTTP会话信息而发现自己没有该会话信息的时候,它会把请求同时发给所有的节点(multicast),而当一个节点需要写HTTP会话信息的同时,它也会把写请求发给所有的节点,所以2个节点的处理和100个节点的处理都是一样的。
Coherence的使用场景
Coherence可以用于下面图示的一些技术场景:
1. Caching:正如Coherence的别名是Data Grid,Coherence在这种场景主要是被用于缓存数据源的数据,当应用需要数据时,直接从Coherence里面取得而不是从后台数据源取得。比如用于缓存用户的个人设置信息。这种使用方式可以极大降低对后台数据源的压力,并且甚至当后台数据源不可用的时候也不影响系统的可用性。
2. Analytics:用于查询,从简单查询到复杂查询,比如用于查询金融交易系统的投资者持仓信息(非常密集的查询)。这种使用方式还可以使用多个节点的并发查询。
3. Transactions:在Coherence直接处理交易,可以在Coherence直接提交交易,从而得到极快的响应速度和高可扩展性。
4. Events:Coherence里可以使用事件驱动的架构,能够对事件做出实时的处理。比如在线游戏使用EDA架构处理“武器”,“装备”的买卖交易。
相关推荐
"coherence-work.jar, coherence.jar, tangosol.jar"这三个文件是Oracle Coherence数据网格产品的一部分,它们对于Openfire的高性能、高可用性和分布式数据管理至关重要。 首先,让我们逐一了解这些文件的作用: 1...
"Wavelet Coherence"是小波分析的一个重要分支,主要研究两个时间序列之间的相干性,即在不同频率和时间点上它们的相关性。 在这个"wavelet-coherence-master.rar"压缩包中,包含了用于执行小波分析和计算相关性的...
《深入理解Coherence.jar与coherence-work.jar》 在分布式计算和大数据处理领域,Oracle Coherence是一款强大的数据网格解决方案,它提供了高效的缓存、数据共享和数据管理功能。本文将详细探讨Coherence.jar和...
标题中的"coherence.jar-coherence-work.jar-tangosol.jar-"揭示了这是一组与Oracle Coherence相关的Java库文件。Coherence是Oracle公司提供的一种分布式数据管理解决方案,它主要用于实现高性能的数据缓存、数据...
《Coherence企业级缓存深度解析》 Oracle Coherence是一款高效的企业级数据缓存系统,它为分布式应用程序提供了数据管理、缓存以及服务网格的功能。本文将深入探讨Coherence的核心特性,包括其QuickStart和编程模型...
在这种情况下,关键的三个 jar 包是:`coherence.jar`、`coherence-work.jar` 和 `tangosol.jar`。这些 jar 文件对于 OpenFire 的正常运行至关重要,因为它们提供了必要的库支持和服务功能。 `coherence.jar` 是 ...
在IT行业中,Coherence是Oracle公司提供的一种分布式数据管理解决方案,它主要被用来构建高性能、高可用性的数据网格。这个技术的核心在于提供了一个强大的缓存层,能够支持大规模并发访问和分布式计算。在这个场景...
标题“Coherence_matlab_Coherence_multichannel_”表明我们正在探讨的是使用MATLAB进行多通道相干性分析。在信号处理和通信领域,相干性分析是一种衡量两个或多个信号之间线性关系的方法,特别是在时间域或频域内。...
1. `coherence.jar`:这是Oracle Coherence的一个组成部分,Coherence是一款分布式数据管理产品,主要用于提供数据缓存、数据复制、事件处理等功能。在Openfire中,它可能被用于优化数据库访问性能,实现高效的缓存...
### Oracle Coherence:起步与关键技术解析 #### 一、Oracle Coherence简介 Oracle Coherence是一款高性能、可扩展的分布式数据网格平台,它主要用于在多个应用服务器之间共享数据,并提供一致性和高可用性保障。...
在MATLAB环境中,小波相干性(Wavelet Coherence)是一种衡量两个时间序列在不同时间和频率尺度上相关性的方法。本文将围绕"wavelet-coherence-master.zip"这一压缩包文件,详细介绍小波相干性分析的基本概念、...
**QSC 版本控制软件——Team Coherence详解** 在软件开发过程中,版本控制是至关重要的环节,它能够帮助团队有效地管理和追踪代码的修改历史,确保项目的稳定性和可维护性。QSC 版本控制软件,即 Team Coherence,...
### Coherence企业级缓存(二):QuickStart与编程详解 #### 1. Coherence简介及重要性 Coherence是一款高性能、可扩展的企业级内存数据网格解决方案,由Oracle公司提供。它允许开发者构建分布式、容错且具有高度可...
### Coherence 入门知识点详解 #### 一、Coherence简介 Coherence是一款由Oracle公司提供的内存数据网格解决方案,主要用于缓存Java对象。它能够帮助应用程序显著提高性能和可伸缩性,尤其适用于那些需要处理大量...
### Oracle Coherence中文开发文档知识点解析 #### 一、引言 Oracle Coherence是一款高性能、分布式内存数据网格平台,主要用于解决大数据环境下对于实时数据处理的需求。该文档为Oracle Coherence的中文开发指南,...
### Coherence企业级缓存与JMX管理监控深入解析 #### 概述 在现代企业级应用中,数据缓存技术扮演着至关重要的角色,它能够显著提升应用程序的响应速度和整体性能。Oracle Coherence作为一款高性能、分布式、内存...
《Packtpub.Oracle.Coherence.3.5.Mar.2010》是关于Oracle Coherence 3.5版本的详细教程,旨在帮助读者深入理解并掌握这一强大的数据网格解决方案。Oracle Coherence是一款企业级的分布式数据管理平台,主要用于提供...
而Coherence是Oracle的一个数据网格解决方案,它提供了高度可扩展的数据缓存和处理服务,常用于提高大规模分布式系统的性能和可用性。当WebLogic与Coherence结合时,可以构建出高效率、高可用性的集群环境。接下来,...
【Redis和Coherence高可用比对测试报告】 本次测试旨在评估Redis和Coherence在高可用性方面的性能,特别是在处理主备切换和集群稳定性上的表现。Redis是一款流行的关键值存储系统,而Coherence是Oracle提供的分布式...