oracle - 在每个集群节点只负责一条数据的情况下,如何使用 Oracle coherence 在受干扰的缓存中处理数据一致性?
问题描述
在每个集群节点只负责一条数据的情况下,如何使用 Oracle coherence 在分布式缓存中处理数据一致性?
我也对以下内容感到困惑
集群节点是否位于不同的服务器上,并且每个节点都有自己的本地缓存?例如,假设我有节点 A、缓存“a”和节点 B 以及缓存“b”,数据库是否位于单独的服务器 D 上?
何时更新,是先在 D 上进行更新并写回缓存 a 和 b,或者数据一致性如何工作。
由于我是 Oracle Cohernace 的新手,因此外行的解释会很有帮助
谢谢!
解决方案
Coherence 使用两种不同的分布机制:完全复制和数据分区;每个分布式缓存都配置为使用其中之一。大多数大型系统中的大多数缓存都使用分区模型,因为它们可以很好地扩展,为每台服务器添加存储,并且即使多达数百台服务器也能保持非常高的性能。
Coherence 软件架构是基于服务的;当 Coherence 启动时,它首先创建一个用于管理集群的本地服务,该服务通过网络进行通信以定位并加入(或创建,如果它是第一个运行的服务器)集群。
如果您有任何分区缓存,则这些缓存由分区缓存服务管理。分区缓存服务协调整个集群以管理整个分区缓存。它动态地执行此操作,首先将数据管理的职责平均分配给所有支持存储的节点。缓存中的数据是分区的,这意味着“切片”,因此一些值将发送到服务器 1,一些值将发送到服务器 2,等等。数据所有权模型可以防止混淆谁拥有什么,所以即使如果消息在网络上延迟并最终到达错误的服务器,则不会造成任何损坏,并且系统会自我纠正。如果一台服务器死机,它所管理的任何数据(切片)都会由一台或多台其他服务器备份,并且服务器协同工作以确保为没有所需备份数量的任何数据进行新的备份。它是一个动态系统。
为应用程序提供了几种不同的 API,从使用哈希映射(实际上是 Java Map API)这样简单的 API 开始。
推荐阅读
- python - GCP AI 平台 API,拒绝访问
- ios - 为什么SKScene的view属性在呈现场景时没有设置?
- python - 设置scrapyd输出文件的格式
- rust - Rust 中是否有任何机制等效于没有虚拟(动态调度)的 C++ 继承?
- vue.js - 如何在具有多个过滤器的 v-data-table 中选择默认值
- node.js - 在使用 Angular 应用程序运行 Lighthouse 后注册一个卸载侦听器
- reactjs - 如何在使用反应选择后过滤值重置 - 管理员
- c++ - std::partition 实现
- python - Python OS For Loop - TypeError:“模块”对象不可调用
- c++ - C ++中的GFG括号检查器问题给出错误答案