分布式协调服务的基本职责

简介: 【2月更文挑战第22天】

分布式协调服务是分布式应用中不可缺少的,通常担任协调者的角色,比如leader选举、负载均衡、服务发现、分布式队列和分布式锁等,这里以leader选举和负载均衡为例,说明分布式协调服务的存在意义及基本职责。


1、leader选举

在分布式系统中,常见的一种软件设计架构为master/slave,如下图所示,其中master负责集群管理,slave负责执行具体的任务(比如存储数据、处理数据)。这种架构存在一个明显缺陷:master是单点。为了避免master出现故障导致整个集群不可用,常见的优化方式是引入多master,比如双master:active master和standby master,其中active master对外提供服务,而standby master则作为备用master,一直处于“待命”状态,一旦active master出现故障,自己则切换为active master。

引入双master需要解决如下两个难题:

1)如何选举出一个master作为active master?不能引入不可靠的第三方组件进行选举,否则又再次引入了一个存在单点故障的服务。一种常见的解决思路是实现Paxos一致性协议,让多个对等的服务通过某个方式达成一致性,从而选举出一个master。


2)如何发现active master出现故障,如何让standby master安全切换为active master?该问题的难点在于如何避免出现脑裂(split-brain),即集群中同时存在两个active master,造成数据不一致或集群出现混乱的现象。


几乎所有采用master/slave架构的分布式系统均存在以上问题,为了避免每个分布式系统单独开发这些功能造成工作冗余,构造一个可靠的协调服务势在必行。该协调服务需具备leader(master)选举和服务状态获取等基本功能。

2、负载均衡

在类似于Kafka的分布式消息队列中,生产者将数据写入分布式队列,消费者从分布式消息队列中读取数据进行处理,为了实现该功能,需要从架构上解决以下两个问题:

1)生产者和消费者如何获知最新的消息队列位置?

消息队列是分布式的,通常由一组节点构成,这些节点的健康状态是动态变化的,比如某个节点因机器故障变得对外不可用,如何让生产者和消费者动态获知最新的消息队列节点位置是必须要解决的问题。


2)如何让生产者将数据均衡地写入消息队列中各个节点?

消息队列提供了一组可存储数据的节点,需让生产者及时了解各个存储节点的负载,以便智能决策将数据均衡地写入这些节点。


为了解决以上两个问题,需要引入一个可靠的分布式协调服务,它具备简单的元信息存储和动态获取服务状态等基本功能。


通过leader选举和负载均衡两个常见的分布式问题,我们可以了解到,协调服务对于一个分布式系统而言多重要。为了解决服务协调这一类通用问题,ZooKeeper出现了,它将服务协调的职责从分布式系统中独立出来,以减少系统的耦合性和增强扩充性。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
131 2
|
2天前
|
监控 负载均衡 Dubbo
|
2天前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
189 0
|
2天前
|
存储 大数据 Apache
深入理解ZooKeeper:分布式协调服务的核心与实践
【5月更文挑战第7天】ZooKeeper是Apache的分布式协调服务,确保大规模分布式系统中的数据一致性与高可用性。其特点包括强一致性、高可用性、可靠性、顺序性和实时性。使用ZooKeeper涉及安装配置、启动服务、客户端连接及执行操作。实际应用中,面临性能瓶颈、不可伸缩性和单点故障等问题,可通过水平扩展、集成其他服务和多集群备份来解决。理解ZooKeeper原理和实践,有助于构建高效分布式系统。
|
2天前
使用JWT的服务分布式部署之后报错:JWT Check Failure:
使用JWT的服务分布式部署之后报错:JWT Check Failure:
54 1
|
2天前
|
缓存 前端开发 小程序
【分布式技术专题】「架构设计方案」盘点和总结RBAC服务体系的功能设计及注意事项技术体系
【分布式技术专题】「架构设计方案」盘点和总结RBAC服务体系的功能设计及注意事项技术体系
33 0
|
2天前
|
XML 安全 Java
【分布式技术专题】「单点登录技术架构」一文带领你好好对接对应的Okta单点登录实现接口服务的实现落地
【分布式技术专题】「单点登录技术架构」一文带领你好好对接对应的Okta单点登录实现接口服务的实现落地
73 0
|
2天前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
795 0
|
2天前
|
NoSQL Java 关系型数据库
【Redis系列笔记】分布式锁
分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路
129 2
|
2天前
|
存储 监控 NoSQL
【Redis】分布式锁及其他常见问题
【Redis】分布式锁及其他常见问题
16 0