- 博客(12)
- 收藏
- 关注
原创 8.zookeeper实现分布式锁
摘要:本文介绍了使用ZooKeeper实现分布式锁的方法,包括读锁和写锁的加锁流程。通过Java代码示例展示了如何利用原生ZooKeeper API实现读写锁功能,包含节点创建、监听机制和锁释放等关键操作。测试代码模拟了多线程环境下获取读锁和写锁的场景,验证了分布式锁的正确性。该方案适用于需要协调分布式系统资源访问的场景。
2025-10-07 15:06:54
382
原创 7.zookeeperLeader选举流程
摘要 ZooKeeper选举机制基于服务器ID、事务ID(zxid)和逻辑时钟等参数,通过投票过程选出Leader。选举状态包括LOOKING、FOLLOWING、OBSERVING和LEADING。启动时,各服务器处于LOOKING状态,通过相互投票(比较epoch、zxid和myid)选出Leader。运行中若Leader宕机,其他服务器会重新选举。选举结果取决于服务器启动顺序和当前状态参数。通过srvr命令可查看ZooKeeper节点信息,包括Zxid、运行模式等关键指标。
2025-10-07 15:05:22
387
原创 6.zookeeper数据同步流程
ZooKeeper使用ZAB协议保证分布式一致性,包含消息广播和崩溃恢复两部分。消息广播采用2PC机制,Leader广播提案并获得过半Follower确认后提交。崩溃恢复时选举zxid最大的节点为新Leader,处理未提交日志。ZooKeeper通过多数派确认保证强一致性,写操作全局有序,落后的节点通过快速追赶机制同步数据。虽然允许副本短暂不一致,但读取时会与Leader确认最新状态,确保线性一致性。
2025-10-02 12:16:38
564
原创 5.zookeeper权限控制ACL
ZooKeeper权限控制通过ACL机制实现,支持world、auth、digest和ip四种认证方式。权限分为create、delete、read、write和admin五种操作。默认采用world:anyone:cdrwa模式。auth方式需要先添加认证凭证再设置权限;digest需要密码密文;ip方式需指定IP地址。通过配置超级用户(修改zkServer.sh添加superDigest参数)可绕过ACL限制。各方式通过setAcl命令设置权限,getAcl查看当前权限。
2025-10-02 12:15:04
559
原创 4.zookeeper集群搭建
本文介绍了在单机上搭建Zookeeper伪集群的配置过程。首先创建了四个数据目录zkdata1-4,并分别写入myid文件标识节点ID。然后复制生成四个配置文件zoo1-4.cfg,每个配置文件设置了不同的数据目录路径和客户端端口(2181-2184),同时配置了相同的集群服务器列表,其中server.4被标记为observer角色。所有节点使用相同的tickTime、initLimit和syncLimit参数,通过不同端口实现单机多实例部署。
2025-10-02 12:14:09
217
原创 3.zookeeper使用教程2
本文介绍了使用Maven配置ZooKeeper客户端的两种方式:原生API和Curator框架。首先给出了Maven依赖配置,包含JUnit、ZooKeeper 3.4.8和Curator 4.0.0相关依赖。然后演示了原生API的连接实现,通过CountDownLatch实现同步等待连接状态,并展示了连接成功的控制台输出。最后说明创建节点的方法参数,包括路径、数据、权限控制(OPEN_ACL_UNSAFE等)和创建模式等关键配置项。
2025-10-01 16:55:17
1004
原创 2.zookeeper使用教程1
ZooKeeper 采用类似 key-value 的形式进行数据存储,下图中的 ‘/’ ‘/a’ '/b’等路径就是我们的key,对于每一个 key 我们可以维护一个 value,一个key 也可以称为一个 znode 节点。与 ls -w / 的区别: stat命令监听是监听节点本身的数据变化和删除,ls命令监听是监听子节点的新增和删除变化。set 命令用于修改节点存储的数据。create [-s] [-e] key(路径) value(数据) acl(权限)get 命令用于获取节点数据和状态信息。
2025-10-01 16:53:42
258
原创 1.zookeeper环境搭建
本文介绍了ZooKeeper及其应用场景,包括配置维护、命名服务、集群管理等。详细说明了在Linux环境下安装配置ZooKeeper的步骤:先安装JDK8并配置环境变量,再下载ZooKeeper3.7.0,通过修改zoo.cfg配置文件设置心跳时间、数据目录等关键参数。最后演示了启动ZooKeeper服务和使用客户端连接的操作流程,包括启动服务、连接客户端和退出命令。
2025-10-01 16:46:57
404
原创 QT实战百度语音识别
随着学习的深入,感觉愈发缺乏满足感。刚好看到微信语音转文字的功能,经网上查询,发现可以使用QT + 百度语音识别技术实现这一功能。当然,由于使用的 QT 和 百度语音识别,那么看不到一些具体的底层实现,但操作起来相对比较简单。俗话说:“没吃过猪肉,还没见过猪跑?”,我打算先看看别人已有的技术,搬过来跑一下,然后再进行深入学习,同时也可以复习一下 QT 相关知识。文章如有写错或者代码可优化,欢迎大家指正!
2024-05-08 21:30:45
3643
5
原创 音视频常用工具
VLC 播放器VLC支持多种常见音视频格式,支持多种流媒体传输协议,也可当作本地流媒体服务器使用,功能十分强大。官网下载地址: https://www.videolan.org/VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。VLC的全名是Video Lan Client, 是一个开源、跨平台的视频播放器。
2024-05-06 22:04:19
1378
1
原创 个人学习总结__打开摄像头、播放网络视频的以及ffmpeg推流
最近入手了一款非常便宜的usb摄像头(买回来感觉画质很低,没有描述的4k,不过也够用于学习了),想着利用它来开启流媒体相关技术的学习。第一步便是打开摄像头,从而才能够对它进行一系列后续操作,诸如实时编解码,推流摄像头采集的数据等等。本篇文章记录了如何通过QT、libvlc、ffmpeg三种方式来调用usb摄像头,顺带讲述了如何播放http网络视频流。以及如何搭建一个srs流媒体服务器。如代码有逻辑错误或者可优化,欢迎大家指正!希望和大家共同进步。
2024-04-28 22:32:03
3398
原创 ffmpeg与sdl的个人笔记
AVFormatContext: 封装格式上下文结构体,也是统领全局的结构体,保存了视频文件封装格式相关信息。AVInputFormat demuxer每种封装格式(例如FLV, MKV, MP4, AVI)对应一个该结构体。AVStream 视频文件中每个视频(音频)流对应一个该结构体。AVCodecContext 编解码器上下文结构体,保存了视频(音频)编解码相关信息。AVCodec 每种视频(音频)编解码器(例如H.264解码器)对应一个该结构体。
2024-04-25 17:57:57
1519
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅