Oracle Coherence

后写入、聚集写入和批量写入


由于集群中的事务吞吐量可线性伸缩,数据更改的相关成本就是一个固定的时延,通常为几毫秒;并且每秒的事务处理总量仅受到集群大小的限制。在一个应用程序中,Oracle Coherence 可实现接近每秒 50 万次的事务处理率,并且这一水平可在由多台商用双核服务器组成的集群中达到。

通常,Oracle Coherence 正在管理的数据实际上是正式 记录系统 (SOR)(如数据库)中的一份临时数据备份。为了避免使数据库成为事务处理瓶颈,同时为了消除数据库更新时延,Oracle Coherence 提供了后写入功能,该功能允许应用程序更改集群中的数据,并且这些更改可异步重现到应用程序的数据库(或 EIS)中。通过管理集群缓存(具有前文所述的所有高可用性、可靠性和可伸缩性属性)中的更改,未决更改不会受到服务器故障的影响,同时总的更改率可随集群的大小线性伸缩。

后写入功能通过将每个数据更改进行排队来实现,队列包含一个待写到记录系统中的更改列表。队列中某一项的持续时间是可配置的,这称作后写式延时。当数据更改后,会被添加到后写式队列中(如果它尚不在队列中),在配置的后写入延时结束后,队列条目即设置成熟。当队列条目成熟后,系统会将相应数据的最新副本写到记录系统中。

为了避免记录系统不堪重负,Oracle Coherence 仅将数据的最新副本重现到数据库中,从而将对同一数据的多次更新汇集到单次数据库操作中。后写入延时越长,汇集的次数就越多。此外,如果多个数据发生更改,所有这些更新都可以打包(例如,使用 JDBC 语句打包)到单个数据库操作中。这样,可将宽度(发生更改的数据数量)和深度(各个数据的更改次数)极大的更改绑定到单个数据库操作,从而极大地减少数据库的负载。批量打包也是完全可配置的;一个名为 Write Batch Factor 的选件甚至允许将某些未成熟的队列条目包含到批量更新中。

技术信息
 Coherence 知识库:Coherence 3.3 用户指南 (wiki)
Coherence 知识库是适用于开发人员的资源,提供联机文档、版本说明和 Coherence 用户指南。
 Oracle Coherence 论坛
 JavaDoc API:Coherence 3.3 JavaDoc
 Oracle Coherence