当前位置: 首页 > news >正文

附近网站电脑培训班网站团购功能怎么做

附近网站电脑培训班,网站团购功能怎么做,涿州规划建设局网站,自己做发卡网站支付接口文章目录前言一、ACL访问控制列表二、原子广播协议(Zab协议)总结前言 在分布式系统中,安全访问控制和一致性保证是两大核心需求。本文将深入探讨Zookeeper的ACL权限控制机制和Zab协议的核心原理,帮助读者理解Zookeeper如何保障数…

文章目录

  • 前言
  • 一、ACL访问控制列表
  • 二、原子广播协议(Zab协议)
  • 总结


前言

在分布式系统中,安全访问控制一致性保证是两大核心需求。本文将深入探讨Zookeeper的ACL权限控制机制和Zab协议的核心原理,帮助读者理解Zookeeper如何保障数据安全性和系统一致性。


一、ACL访问控制列表

ACL(Access Control Lists)是Zookeeper保护ZNode数据安全的关键机制,它定义了哪些用户可以执行哪些操作。

1. Scheme(验证方案):Scheme定义了认证方式,Zookeeper支持四种主要方案。

Scheme描述使用场景
world默认方案,所有用户都可访问公共节点
auth已认证用户(无需显式凭证)会话级访问控制
digest用户名+密码认证最常用的安全控制
ip客户端IP地址认证网络级访问控制

2. Permissions(权限):每种Scheme可配置以下权限

权限标识描述
CREATEc创建子节点
READr读取节点数据及子节点列表
WRITEw设置节点数据
DELETEd删除子节点
ADMINa设置ACL权限

关键点:DELETE权限针对的是子节点,要删除当前节点需要父节点的DELETE权限。

3. ACL设置与验证实战
下面通过Java代码演示ACL的设置和验证:

import org.apache.zookeeper.*;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Id;
import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;
import java.util.ArrayList;
import java.util.List;public class ZookeeperAclDemo {private static final String CONNECT_STRING = "localhost:2181";private static final int SESSION_TIMEOUT = 3000;private ZooKeeper zooKeeper;// 连接到Zookeeper服务器public void connect() throws Exception {zooKeeper = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, null);System.out.println("连接Zookeeper成功");}// 创建带ACL的节点public void createNodeWithAcl() throws Exception {String path = "/secure-data";byte[] data = "Sensitive Information".getBytes();// 添加认证信息(用户名:admin,密码:admin123)zooKeeper.addAuthInfo("digest", "admin:admin123".getBytes());// 准备ACL列表:digest方案 + 所有权限List<ACL> acls = new ArrayList<>();String digest = DigestAuthenticationProvider.generateDigest("admin:admin123");acls.add(new ACL(ZooDefs.Perms.ALL, new Id("digest", digest)));// 创建持久节点String createdPath = zooKeeper.create(path, data, acls, CreateMode.PERSISTENT);System.out.println("带ACL节点创建成功: " + createdPath);}// 验证ACL访问控制public void verifyAcl() throws Exception {String path = "/secure-data";try {// 尝试无认证访问(应失败)ZooKeeper noAuthZk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, null);System.out.println("无认证访问结果: " + new String(noAuthZk.getData(path, false, null)));} catch (KeeperException.NoAuthException e) {System.out.println("无认证访问被拒绝: " + e.getMessage());}try {// 尝试错误密码访问(应失败)ZooKeeper wrongAuthZk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, null);wrongAuthZk.addAuthInfo("digest", "admin:wrongpass".getBytes());System.out.println("错误密码访问结果: " + new String(wrongAuthZk.getData(path, false, null)));} catch (KeeperException.NoAuthException e) {System.out.println("错误密码访问被拒绝: " + e.getMessage());}// 正确认证访问(应成功)ZooKeeper correctAuthZk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, null);correctAuthZk.addAuthInfo("digest", "admin:admin123".getBytes());System.out.println("正确认证访问结果: " + new String(correctAuthZk.getData(path, false, null)));}public static void main(String[] args) throws Exception {ZookeeperAclDemo demo = new ZookeeperAclDemo();demo.connect();demo.createNodeWithAcl();demo.verifyAcl();}
}

代码执行结果:

连接Zookeeper成功
带ACL节点创建成功: /secure-data
无认证访问被拒绝: KeeperErrorCode = NoAuth for /secure-data
错误密码访问被拒绝: KeeperErrorCode = NoAuth for /secure-data
正确认证访问结果: Sensitive Information

4. ACL管理技巧

  1. 查看ACL:使用getAcl命令
getAcl /secure-data
  1. 添加认证:使用addauth命令
addauth digest admin:admin123
  1. 权限组合:使用cdrwa表示所有权限,rw表示读写权限

二、原子广播协议(Zab协议)

Zab协议是Zookeeper实现分布式一致性的核心算法,保证所有节点的状态一致性。

  1. Zab协议核心概念

    • 事务(Transaction):改变Zookeeper状态的操作
    • 事务ID(zxid):64位全局唯一ID(高32位为epoch,低32位为计数器)
    • 提案(Proposal):Leader提出的状态变更建议
    • 仲裁(Quorum):集群多数节点(n/2+1)
  2. Zab协议工作流程
    Zab协议分为两个关键阶段:
    阶段1:Leader选举(崩溃恢复阶段)
    在这里插入图片描述
    选举规则:
    优先选择zxid最大的服务器。
    zxid相同时选择serverId最大的服务器。

阶段2:消息广播(原子广播阶段)
消息广播
关键流程:
1.Leader接收客户端请求,生成全局有序的zxid。
2.Leader发送PROPOSAL给所有Follower。
3.Follower将PROPOSAL写入事务日志并响应ACK。
4.Leader收到多数ACK后发送COMMIT。
5.Follower收到COMMIT后提交事务。

  1. Zab协议特性
    • 可靠提交:提案一旦被提交,最终会被所有服务器提交。
    • 全局有序:所有事务按zxid顺序处理。
    • 因果有序:事务之间的依赖关系得到保持。
    • 快速恢复:选举新Leader后能快速同步状态。
  2. zxid的作用
    zxid
    • epoch:Leader任期编号,每次选举后递增。
    • 计数器:事务序列号,从0开始递增。
    • 全局有序:通过比较zxid实现全序关系。
    • 故障恢复:新Leader通过zxid确定同步点。

总结

Zookeeper 通过 ACL 权限控制(支持 world/auth/digest/ip 四种方案和 CRWDA 五种权限)实现节点访问安全,利用 Zab 协议(Leader 选举 + 原子广播两阶段)和全局有序的 zxid(epoch + 计数器)保障分布式一致性,二者共同构成 ZooKeeper 作为分布式协调服务的核心基石。

http://www.dtcms.com/a/514920.html

相关文章:

  • 运城手机网站建设百度云超级会员试用1天
  • 网站后台页面企石镇网站建设
  • 做资源网站赚钱吗wordpress十大主题
  • 台州网站seo外包网站后台首页
  • 永泰县住房和城乡建设局网站网站建站平台公司
  • 政务中心建设网站seo软件开发
  • wordpress站点添加skype门户网站和微网站的区别
  • 淘宝单网站建设赣州网站优化公司
  • 网站安全如何做网站推广优化哪家公司好
  • 如何做企业网站推广产品网络营销推广方案分析
  • 陕西省建设信息网站ppt精美模板
  • 公司设计网站有哪些新站秒收录接口
  • 第一ppt网课件下载北京百度推广seo
  • 中国建设人才信息网站鲜花网站建设文档
  • 企业网站主页模板wordpress批量删除字段
  • 哪个网站有律师做的案件响应式布局
  • 中国建设工程造价管理系统网站温州建筑信息平台
  • 厦门在线制作网站网站空间单位
  • 李鸿星电子商务网站建设免费申请激活码
  • 怎样说服客户做网站seo标题是什么
  • 网站怎么做关键词库企业咨询顾问服务协议
  • 网站设计常州苏州企业网站建设开发与制作
  • 北京建设网站网站建设公司的服务定位
  • 众美商务公馆做网站哪里有网页设计培训
  • 手机怎么自己建网站百度站点
  • 什么网站可以做图赚钱吗做ui设计工资一般多少
  • 开发cms网站系统wordpress批量添加tag
  • 企业网站备案管理系统网站收录不好的原因
  • 网站做超链接的方式有哪些海口 网站制作公司
  • wap网站软件wordpress loginview