分片架构设计技巧
Es集群设计技巧
节点可以配置为不同角色,通过选举master实现集群管理
Coordinating:协调节点;Master:管理节点;Data:数据存储节点;
数据是按照索引分片的,不是按照节点分片。为了保证高可用,每个分片可以有多个副本
bully和 raft算法
master和data混合部署
节点同时为master和data
每个节点都可以接受和处理客户端请求,写入请求会转发到数据主分片的node
适合数据量不大的业务
master和data分离部署
master与data 分离部署,master节点约为3或5个,data节点可以有几十个
master节点 不处理读写请求,只是管理集群。data节点处理读写请求和存储数据
适用于数据量比较大的业务
coordinationg 分离部署
master节点约为3或5个,data节点可以有几十个,coordinating节点2个以上
master节点管理集群,coordinating节点读写聚合,data节点负责数据存储
适用于数据量比较大,读写请求比较复杂的业务
cross cluster replication
两个集群 leader负责读写数据,follower复制数据
适合本地化聚合存储
redis cluster设计技巧
cluster为多个分片,不同分片保存不同数据
每个分片内部通过主备复制保证可用性
分片内部自动实现master选举,但是不依赖哨兵,cluster本身具备分片选举的能力
客户端连接需要特定实现,如jedisCluster,cluster有特有命令
数据分布和路由
所有key按照hash分为16384个槽位,将槽位分给分片
节点之间通过gossip交换数据,节点变化时会自动更新集群信息
每个节点都有所有key的分布信息
client连接任意节点,节点使用move命令告诉数据的实时位置
mangodb/hdfs 设计技巧
mangos sharding架构
mangos
独立部署代理程序,应用程序请求发给mangos
可以和应用程序部署在一起,可以和shard服务器部署在一起
为了提升性能 mangos会缓存config server上的cluster配置信息
config server
存储集群的元数据
自身通过replica set实现高可用
当config server挂掉时 cluster 进入read only状态
shard
存储分片数据的服务器
通过replica set保证可用性
如果全部挂掉,分片无法访问
HDFS架构
namenode 管理集群,保存元数据
datanode 保存数据,block
journalnode 监控并记录日志,被standby节点监听拉取日志,至少3个多数日志复制写入才算成功
failovercontroller namenode中独立进程,监控状态,依赖zk实现高可用