Oracle NoSQL Database 存储节点
存储节点 (SN) 通常是一台拥有自己的本地永久存储(磁盘或固态)、单核或多核 CPU、内存和 IP 地址的物理计算机。系统所包含的存储节点越多,所提供的聚合吞吐量和存储容量就越大。分库中的复制程度越高,系统的请求延迟就越短。可以通过在系统中添加存储节点来增加容量、减少延迟并提高吞吐量。
存储节点代理 (SNA) 运行在每个存储节点上,监视节点的行为。SNA (a) 从管理服务接收配置并 (b) 向管理服务报告监视信息,管理服务是到 Oracle NoSQL Database 监视仪表盘的接口。SNA 持续从存储节点收集运营数据,然后根据请求将其交付给管理服务部门。
一个存储节点可为一个或多个复制节点提供服务。每个复制节点都属于一个分库。一个分库中的所有节点均针对相同的数据。每个分库都有一个指定的主节点,用于处理所有数据修改操作(创建、更新和删除)。其他节点是只读副本,但是在当主节点发生故障时会担任主节点的角色。典型的安装在分库中使用复制因子 3,以确保在同时发生两个或更多故障的情况下,系统仍然能够继续进行读取操作。需要更高或更低可靠性的应用可以对此参数进行相应的调整。
下图显示了包含 10 个分库(0-9)的安装。每个分库的复制因子均为 3(一个主副本和两个副本),分布在两个数据中心中。请注意,我们将两个复制节点放在两个数据中心中较大的一个中,并将最后一个复制节点放在较小的一个中。这种安排可能适用于使用较大数据中心提供主数据访问的应用,这样当主数据中心发生灾难性故障时就会使用较小的数据中心。10 个分库存储在 30 个存储节点上,分布在两个数据中心中。
复制
复制节点直接从日志结构化存储系统获取数据或直接将数据写入其中,该系统可提供出色的写入性能,同时维持可提供低延迟读取性能的索引结构。自从初始部署以来,Oracle Berkeley DB Java Edition 存储引擎率先在键/值数据库中使用了逻辑结构化存储,并在 Dynamo、Voldemort 和 GenieDB 等多个开源 NoSQL 解决方案以及企业部署中得到了验证。Oracle NoSQL Database 使用复制来确保发生故障时的数据可用性。其单主架构要求在主节点进行写入操作,然后将其传播到副本。如果主节点发生故障,分库中的节点将自动进行可靠的选举(使用 Paxos 协议),选举将从其余节点中选出一个作为主节点。然后新的主节点接管写入的职责。当存储节点上有多个复制节点时,系统会尝试确保任何分库在单个存储节点都没有多个复制节点。