分片架构设计技巧
创始人
2024-02-11 14:36:49
0

Elasticsearch集群设计技巧

ES的基本架构

在这里插入图片描述

  1. 节点可以配置为不同角色,通过选举Master管理集群
  2. Coordinating:协调节点;Master:管理节点;Data:数据存储节点

在这里插入图片描述

数据是按照索引分片的,而不是按照节点分片,每个分片可以有多个副本来保证高可用,例如图中P0有2个R0副本

ES的选举

在这里插入图片描述

  1. 先根据节点的clusterStateVersion比较,clusterStateVersion越大,优先级越高
  2. clusterStateVersion相同时,进入compareNodes,其内部按照节点的ID比较(ID为节点第一次启动时随机生成)

在这里插入图片描述

Zen Discovery 采用了很多分布式共识算法中的想法,但只是有机地采用,并没有严格按照理论所规定的那个模型,7.0 是基于 Raft 但不全是 Raft

ES的部署架构模式

模式1-Master和Data混合部署

在这里插入图片描述

  1. 节点同时配置为Master和Data
  2. 每个节点都可以接收和处理客户端请求,写入操作会转发到数据主分片的Node
  3. 适用于数据量不大的业务

模式2-Master和Data分离部署

在这里插入图片描述

  1. Master节点和Data节点分离部署,Master节点数量3个或5个,Data节点数量可以几十个
  2. Master节点不处理读写请求,只负责集群管理,Data节点处理读写请求和数据存储
  3. 适用于数据量比较大的业务

模式3-Coordinating分离部署

在这里插入图片描述

  1. Master节点数量3个或5个,Data节点数量可以几十个,Coordinating节点2个以上
  2. Master节点不处理读写请求,只负责集群管理,Coordinating负责读写聚合,Data节点负责数据存储
  3. 适用于数据量比较大,读写请求比较复杂的业务

模式4-Cross cluster replication

在这里插入图片描述

  1. 配置为2个集群为 Cross cluster replication,Leader负责数据读写,Follower复制数据、负责数据读取
  2. 适用场景:本地化、聚合存储

Redis cluster设计技巧

Redis cluster基本架构

在这里插入图片描述

  1. Cluster分为多个分片,不同分片保存不同数据
  2. 每个分片内部通过主备复制来保证可用性
  3. 分片内部自动实现Master选举,但不依赖Sentinel,Cluster本身具备分片选举的能力
  4. 客户端连接集群需要特定的实现,例如jedisCluster,因为Cluster有特有的Redis命令

Redis数据分布和路由

在这里插入图片描述

  1. 所有key按照Hash算法分为16384个槽位,然后将槽位分配给分片
  2. 节点之间通过Gossip交换信息,节点变化的时候会自动更新集群信息
  3. 每个节点都有所有key的分布信息
  4. Client连接任意节点,由节点用move指令来告诉实际的数据位置

MongoDB/HDFS集群设计技巧

MongoDB sharding架构

在这里插入图片描述

mongos

  1. 独立部署的代理程序,应用程序请求发给mongos
  2. 可以和应用程序部署在一起,也可以和Shard服务器部署在一起
  3. 为了提升性能,mongos会缓存Config Server上保存的cluster配置信息

Config Server

  1. 存储集群的元数据
  2. 自身通过replicat set保证高可用
  3. 当Config Server挂掉的时候,cluster进入read only

Shard

  1. 存储分片数据的服务器
  2. 自身通过replica set保证高可用,如果全部挂掉,分片就无法访问了

HDFS架构

在这里插入图片描述

NameNode

集群管理节点,保存集群元数据,管理集群(平衡、分配等)

DataNode

存储实际的数据,数据按照block存储

JournalNode

  1. 当Active NameNode修改集群状态后,会写日志到JournalNode集群里面
  2. StandBy NameNode会监听JournalNode,发生变化的时候会拉取日志
  3. JournalNode至少3个,达到多数日志复制写入才算成功

FailoverController

  1. NameNode节点内的一个独立进程,监控NameNode状态
  2. 依赖Zookeeper做高可用

各个架构的简单分析对比

维度ESRedis ClusterMongoDB shardingHDFS
实现复杂度高,需要选举Master节点,且角色类型众多高,需要Gossip协议来交互信息低,Config Server管理集群低,NameNode管理集群
部署复杂度中,需要根据业务规模采用不同的部署模式低,只有一种模式,平滑伸缩高,3类节点,且Config server和Shard要部署主备高,部署Zookeeper、NameNode、DataNode、JournalNode
硬件成本中,每个分片要部署master和slave节点高,Config server和Shard要部署主备高,节点类型很多
支持集群规模超大规模中等规模,建议服务器数量100以内超大规模超大规模
适用场景数据查询和分析缓存数据存储数据存储

相关内容

热门资讯

岳父经典散文 岳父经典散文  在现实生活或工作学习中,大家经常看到散文吧?散文是一种常见的文学体裁,取材广泛,艺术...
大美三峡散文 大美三峡散文  一、传统诗文中的三峡形象  江水奔流、壁立千仞、激流险滩、千帆竞渡、巫山云雨、猿声啼...
散文今时明月旧时约 散文今时明月旧时约  错爱过多少冷酷的月亮,我才能看清自己。这一行行饱含深情的文字,只愿成为一生难忘...
春天的散文 春天的散文300字9篇  春天到来了,湖边的柳树露出一束束新叶,在湖边随风飘扬,婀娜多姿。小编整理的...
青草青青散文 青草青青散文(精选15篇)  在平平淡淡的日常中,许多人都写过散文吧?散文分为叙事散文、抒情散文、哲...
愿岁月温柔以待优秀散文 愿岁月温柔以待优秀散文(通用20篇)  无论是身处学校还是步入社会,大家都不可避免的会接触到散文吧?...
守住一颗宁静的心经典散文 守住一颗宁静的心经典散文  生活是一望无际的大海,人便是大海上的一叶扁舟,大海没有风平浪静的时候,所...
雪的短文散文 雪的短文散文  冬日的早晨,随着闹铃的响起,钻出暖暖的被窝,拉开窗帘。心中不觉掠过一阵惊喜:屋顶上、...
迪卡尔 中秋夜散文 迪卡尔 中秋夜散文  1  往年的中秋与今年的中秋并没有太大的差别,只是,对我来说,迪卡尔的出现,让...
散文近来可好 散文近来可好  曾经默默无言的静潜在同学群里,记得毕业那天,你在我的毕业留言本上绘着几株倩倩的青竹,...
酸石榴,甜石榴散文 酸石榴,甜石榴散文  老家院里种了两株石榴,约二十余年树龄,都有黝黑的粗干虬枝,一北一南,分据院子两...
爱情散文:有一种距离与爱无关 精选爱情散文:有一种距离与爱无关  两个人从陌生到相识,到有好感,到热恋,之间的距离愈来愈小;再到后...
妈妈别打我散文 妈妈别打我散文  初中毕业的时候,那时是07年,我做着08年去北京看奥运的打算。  不料,我去读了高...
自夸等于自贬散文 自夸等于自贬散文  一个人不能妄自菲薄,更不能妄自尊大,妄自菲薄的人看不到自身的优点,可怜可叹;妄自...
梁实秋《男人》散文 梁实秋《男人》散文  在生活、工作和学习中,大家都不可避免的会接触到散文吧?散文不讲究音韵,不讲究排...
菜花黄优美散文 菜花黄优美散文  在江南,过了春分,春色就越发的鲜艳了。最鲜艳的莫过于,田野里肆意铺陈的菜花。像是油...
鲁迅散文《二十四孝图》原文 《二十四孝图》读后感推荐度:二十四孝图读后感推荐度:寒窑赋原文解读推荐度:清明散文推荐度:我眼中的鲁...
朱自清春散文 朱自清春散文  朱自清,原名自华,号秋实,后改名自清,字佩弦。中国现代散文家、诗人、学者、民主战士。...
今夜请将我遗忘散文诗 今夜请将我遗忘散文诗  今夜请将我遗忘。一座青冢,衰草斜阳。我坐在坟头,低声吟唱,扑朔的蝙蝠为我送葬...
温柔如水的抒情散文 温柔如水的抒情散文  温柔如水,柔情似水,女人是水做的,天生就应该温柔善解人意;温柔体贴,默默关爱身...