• 分布式前修课:Zookeeper锁实现方式


    前言

    聊完MySQL和Redis,我们接下来在聊一聊Zookeeper。相信大家都已经发现了,这些都是我们在开发过程非常常用的技术。搞定他们,一切难题都不在话下。

    Zookeeper,盘它

    官网是我们学习某一种技术框架的第一手资料,通过官网我们能挖掘到该框架的最新动态

    What Is Zookeeper

    Zookeeper是一款主要解决分布式协调的服务框架,可以用来维护配置信息、命名、提供分布式同步和服务提供等功能。Zookeeper基于ZAB【ZooKeeper 原子广播】协议,支持高可用。

    图片来源自[官方介绍]ZooKeeper: Because Coordinating Distributed Systems is a Zoo)

    Zookeeper的设计

    设计目标

    Zookeeper的设计很简单,其目的就是为了:

    • 减轻分布式应用程序实现协调服务的压力,允许分布式进程通过共享的分层命名空间相互协调

    而在Zookeeper中的文件存储可以称为:znodes,类似于Linux下的目录和文件;而不同的一点是:ZooKeeper 数据保存在内存中。这样也就意味着Zookeeper自身可以实现实现高吞吐量和低延迟

    命名空间设计

    图片来源自官方介绍

    Zookeeper中名称全部由斜杠【/】 分隔的一系列路径元素,命名空间中的每个节点都由路径标识。而每个节点都可以拥有与其关联的数据以及子节点。这就像拥有一个允许文件也成为目录的文件系统

    专业点来说Zookeeper中的每一个节点都可以称为znode, 主要分为两类:

    • 持久节点:【节点只要创建就存在,除非手动删除】
    • 临时节点:【只要创建znode的会话处于活动状态,那么当前节点就会存在;当会话结束,临时节点自动删除】

    有序节点是在临时节点和持久节点的基础上创建的时候后面跟上顺序,本质上没有发生很大的变化

    Zookeeper提供了监听/回调的机制,当客户端对znode进行操作之后,会触发watch机制,客户端受到znode已经改变的数据包。

    从开发角度来看,这种属于Reactor编程模型,纯异步编程

    Netty就是这种编程模型的典型案例

    稳定大局

    对Zookeeper有一点了解之后,我们就要开始使用它了,我们使用它的目的是为了实现分布式锁。那么我们先来搞定基础环境

    我们这里先按照单机环境来做,后面会给出集群环境的配置方式

    需要注意的是:2N + 1原则

    Zookeeper集群最少需要三台服务器,并且强烈建议使用奇数台服务器。如果您只有两台服务器,那么您会遇到这样的情况:如果其中一台出现故障,则没有足够的机器来形成多数法定人数。两台服务器本质上不如一台服务器稳定,因为有两个单点故障

    环境规划

    我们这里使用的Zookeeper版本:3.6.2

    Zookeeper强依赖于JDK,并且需要安装JDk1.8之上的版本

    node ip port
    zookeeper 192.168.10.200 2181

    单机环境

    环境规划完成之后,接下来就看

  • 相关阅读:
    【数据分析】针对家庭用电数据进行时序分析(1)
    【Arduino+ESP32专题】模拟I/O的使用——PWM
    模仿企业微信界面
    Dart语言简介
    软件测试面试(四)
    电动机保护器的作用
    计算机网络最后复习
    辉芒微IO单片机FT60F021-RB
    【面经】摩根士丹利面经
    手把手教你使用Vite构建第一个Vue3项目
  • 原文地址:https://blog.csdn.net/jcc4261/article/details/127932489