千家信息网

Ignite Partition 笔记

发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,数据复制机制: 客户端根据HASH算出主节点,数据只从客户端发到主节点GridNearAtomicSingleUpdateFuture.mapOnTopologyGridNearAtomicSingl
千家信息网最后更新 2025年02月24日Ignite Partition 笔记

数据复制机制: 客户端根据HASH算出主节点,数据只从客户端发到主节点
GridNearAtomicSingleUpdateFuture.mapOnTopology
GridNearAtomicSingleUpdateFuture.map
GridNearAtomicAbstractUpdateFuture.sendSingleRequest
GridCacheIoManager.send

当数据复制到主节点时,再从主节点复制到其他节点
GridDhtAtomicCache.updateAllAsyncInternal
GridDhtAtomicAbstractUpdateFuture.map
GridDhtAtomicAbstractUpdateFuture.sendDhtRequests
GridCacheIoManager.send

每当集群拓扑改变时候会重新计算主节点
GridCachePartitionExchangeManager.onDiscoveryEvent
GridDhtPartitionsExchangeFuture.onClusterStateChangeRequest/onCacheChangeRequest/onAffinityChangeRequest/
CacheAffinitySharedManager.applyx
GridAffinityAssignmentCache.calculate
AffinityFunction.assignPartitions

IGNITE 采用 Rendezvous hash 算法,计算每个节点的权重, 只要集群视图一致,那么客户端服务端都应用这种算法,找出权重最高的N个节点,
作为主节点和复制节点
RendezvousAffinityFunction:
为每个PARTITION 分配多个集群节点,PARTITION数量为参数传入RendezvousAffinityFunction,默认1024. 分配的结果表示这个PARTITION的数据应该落在哪些节点上
为每个集群节点计算HASH: 值为节点的CONSISTENTHASHID 对 当前的PARTITION取模,
将HASH排序,然后取前N个节点,N为每个PARTITION最终需要复制到的节点,取决于BACKUP的数量,是否EXCLUDE NEIGHBOR等选项
计算 KEY属于哪个PARTITION: 分配的结果存在GridAffinityAssignment中

GridCacheContext.allowFastLocalRead 中有一个方法判断是否可以从本地快速读取:
topology().partitionState(localNodeId(), part) == OWNING

GridCacheContext.toCacheKeyObject 方法将 key 转化为KeyCacheObject, 并分配partition, 参考 IgniteCacheObjectProcessorImpl.partition

读数据:
GridPartitionedSingleGetFuture.mapKeyToNode 方法获取从哪个节点读取数据
内部调用GridCacheAffinityManager.partition 和GridCacheAffinityManager.nodesByPartition
然后默认从获得NODE 列表的第一个读取数据

新的节点加入后会自动重新REBLANCE数据
CacheAffinitySharedManager.onServerJoin
CacheAffinitySharedManager.initAffinityOnNodeJoin

检查rebalance 是否完成 CacheAffinitySharedManager.checkRebalanceState

Partition 的状态 MOVING, OWNING, RENTING, EVICTED, LOST
OWNING 表示分区属于主节点
RENTING 表示拓扑结构改变以后

节点 数据 集群 分配 客户 客户端 方法 拓扑 数量 权重 算法 结果 最高 一致 参数 取决于 多个 时候 机制 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 门头沟区网络安全资质申请哪家好 安卓软件开发培训班哪里好 每次开机都显示服务器正在运行中 数字化网络技术是什么 山西通信软件开发品质保障 企业数据库录入与查询 埃文数据库 怎么为数据库节省资源 ios如何管理服务器 南辕北辙翻译软件开发 网络安全生态峰会.门票 用id加入服务器安全吗 阿里云服务器空间还能用吗 我要办网络安全手抄报的图片 网络安全保险合同设计 华为 网络技术大赛 网络安全 黑色键盘 网络安全技术与实训第四版微课版 如何制作web数据库应用程序 滚动字幕软件开发 惠州自主可控软件开发批发价格 手机能管理云服务器 飞算云智自动软件开发平台 数据库替换链接 怎样通过网页访问服务器软件 轻工业管理软件开发公司 用友软件开发平台登录 物理服务器去哪买 海淀区技术网络技术服务大概费用 计算机网络安全 马利答案
0