【IT168 技术文章】

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的架构图是:

即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架构处理“武器”,“装备”的买卖交易。

oracle知否有用coherence,Oracle Coherence概述相关推荐

  1. DBA必知的170张Oracle常用动态性能表介绍

     DBA必知的170张Oracle常用动态性能表介绍 常用动态性能表.pdf 附录C 动态性能(V$)视图 本附录介绍动态性能视图.这些视图一般作为V$视图引用.本附录包括下列内容: ???? 动态性 ...

  2. linux 重启oracle实例_Oracle实战(二)-Oracle概述

    Oracle发展史 1970年 IBM的Codd博士发表A Relational Model of Data for Large Shared Data Banks 1978年 Oracle 1 汇编 ...

  3. oracle电子商务套件使用手册,Oracle电子商务套件概述.pdf

    Oracle Oracle E-Business E-Business Suite Suite Oracle 电子商务套件概述 Oracle 电子商务套件概述 议题 Oracle E-Business ...

  4. Oracle 体系结构(27)—— Oracle 的数据字典之(一):数据字典概述

    Oracle 体系结构(27)-- Oracle 的数据字典之(一):数据字典概述 数据字典是 Oracle 存放数据库信息的地方,用来描述数据.比如一个表的创建者信息,创建时间信息,所属表空间信息, ...

  5. Oracle的Web控制台端口,Oracle Java Web Console(概述)

    Oracle Java Web Console(概述) Oracle Java Web Console 为用户访问基于 Web 的系统管理应用程序提供了一个公用位置.可以使用所支持的几种 Web 浏览 ...

  6. 45 个非常有用的 Oracle语句

    这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快快收 ...

  7. oracle自带的缓存,ORACLE缓存表与ORACLE缓存

    ORACLE缓存是把ORACLE近期查看的语句防止在ORACLE设定的缓存当中 ORACLE缓存表是把表某个表放置在缓存当中,缓存是ORACLE在内存中的一个分区 表缓存的设定 oracle中如何将表 ...

  8. 使用 VMware Server 在 Oracle Enterprise Linux 上安装 Oracle RAC 10g

    DBA:Linux   下载 VMware Server 1.0.1 Oracle Enterprise Linux 4,Kernel 2.6.9-42.0.0.0.1.ELsmp 适用于 Linux ...

  9. oracle 数据库起监听,oracle启动数据库监听

    linux/Aix启动.关闭Oracle及监听 Aix环境下管理Oracle 1.Aix下查看.启动数据库监听器 以oracle用户执行以下命令: ① lsnrctl status //-查看监听器状 ...

  10. oracle配置网络监听,oracle 配置 网络监听

    tnsping是否可以证明Oracle数据库可用? 监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求.Oracle官方对其的定义为:A process ...

最新文章

  1. TLU-Net:表面缺陷自动检测的深度学习方法
  2. 解决WebStorm中git出现的 Could not read from remote repository问题
  3. Linux>软链接的作用与使用
  4. 如何在 SAP Fiori Elements List Report 表格工具栏里增添新的自定义按钮
  5. 【翻译】.NET 5 Preview 1 发布
  6. 学习easyui疑问(三)
  7. 历史上有过哪些有名的神级显卡?
  8. map函数的用法python,详解Python map函数及Python map()函数的用法
  9. VC++控件加载BMP图片(静态和动态方式)
  10. linux总线控制设备,在platform总线上注册设备并载入驱动控制led灯
  11. C#|通过webBrowser控件实现与html间的相互传值
  12. android 外接扫码枪_Android设备获取扫码枪扫描的内容与可能遇到的问题解决
  13. SAI绘制宇宙的翅膀
  14. 一个 简约 干净 纯净的网址导航 净搜导航
  15. 判断QQ号码长度是否“合法”?让小白来告诉你
  16. N-最短路径分词算法
  17. java 汉字转换全拼、首字母拼音
  18. Web开发之电子签章
  19. JAVA中的异步调用
  20. python画箭头opencv_OpenCV绘制箭头线

热门文章

  1. conda: No writeable envs directories configured.
  2. 游戏思考06:游戏核心逻辑设计—战斗系统基础及进阶(未完待续,12/14)
  3. SMART原则助你设定有效目标
  4. 一起学JAVA 接口 面向接口开发
  5. 英语 动词过去式和过去分词的变化规则
  6. 测试用例设计正交试验法、功能图法
  7. 学习python的字符串组合
  8. 开发人员都需要知道的几款优秀数据库管理工具
  9. pr导出html,premiere视频导出怎么设置? pr导出高质量视频的教程
  10. 2020年ESA中国区10m地表覆盖数据的镶嵌、裁剪与分省数据分享