文章摘要(AI生成)
常用中间件集群管理方式有两种:一种是通过注册中心,如redissentinelrocket MQname serverkafkazookeeperdubbozookeeperspring boot(微服务)eureka,consul,Nacos;另一种是通过分布式节点,如ES节点主、数据、协调节点,节点增加重新路由数据分片,通过ping进行故障检测并选举新节点,Redis主从节点通过路由表分配数据实现主从切换;数据库Mysql主从复制、redis主从复制以及Sentinel+Replication等方式保证集群高可用;redis集群通过互联和二进制协议优化传输,节点下线需超过半数节点检测失效;消息中间件rocketMQ支持多master模式、多master多slave异步复制模式和多master多slave同步复制模式;Kafka通过ISR管理副本和HW机制完成数据同步,zookeeper管理broker和partition节点。
常用的中间件进行集群管理的方式有两种:
一种是通过注册中心进行集群管理的:
中间件 | 注册中心 |
---|---|
redis | sentinel |
rocket MQ | name server |
kafka | zookeeper |
dubbo | zookeeper |
spring boot(微服务) | eureka,consul,Nacos |
另一种是通过分布式节点进行管理:
中间件 | 特征 |
---|---|
ES | 节点分为主节点、数据节点、协调节点。节点的增加会导致数据分片重新路由。通过ping进行故障检测,故障时通过选举选择新的节点。 |
Redis | 节点分为主节点和从节点,数据通过路由表分配到不同的主节点中。通过投票发现故障节点进行主从切换,并通过副本漂移保证集群高可用 |
数据库
Mysql
主从复制:一主多从,主和从之间通过binlog进行数据同步
redis
主从复制:主节点同步操作命令给从节点。
Sentinel+Replication:通过Sentinel检测节点运行状态(哨兵机制),再出现问题时通过sentinal进行自动故障转移(主从切换会丢失数据,且redis只能单点写入,不能水平扩容)
Redis集群:所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。节点的下线是通过集群中超过半数的节点检测失效时才生效。客户端与redis节点直连,不需要中间proxy层。客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value
ES
ES集群中的节点分为master节点、数据节点、协调节点。在指定数量的master节点下线后,通过数据节点的CLUSTER STATE选举master。
消息中间件
rocketMQ
多master模式:多个 master 节点组成集群,单个 master 节点宕机或者重启对应⽤没有影响。
多master多slave异步复制模式:在多 master 模式的基础上,每个 master 节点都有⾄少⼀个对应的 slave。master 节点可读可写,但是slave 只能读不能写,类似于 mysql 的主备模式。性能好,但是数据会丢失
多master多slave同步复制模式:同多 master 多 slave 异步复制模式类似,区别在于 master 和 slave 之间的数据同步⽅式。能保证数据不丢失。
Kafka
broker中的partition在其他不同的broker中都存有副本。通过ISR管理副本,并HW机制完成领导者副本与追随者副本之间的数据同步。broker和partition节点的管理通过zookeeper完成。
评论区