原文链接:http://code.taobao.org/p/taokeeper/wiki/index
目前在公司内部使用ZooKeeper的地方越来越多,应用大多喜欢自己部署一套ZK集群来使用。考虑到ZK的高可用,并且一套ZK集群至少3台机器, 那么每个应用,尤其是一些非核心应用都自己去部署一套的话,对资源利用率很低。另外,随着ZK容灾的提出,单套ZK集群使用的机器量会更大,运维人员开始 对这个情况担忧,强烈希望能够合并ZK集群。
ZK集群合并使用本身并没有太大的难度,问题在于应用方是否愿意大家共用一套ZK集群,这其中一个显而易见的问题就是权限:如果我的数据被别人动了怎么办?
在公司不少牛人的帮助下,暂时得到两个权限方案,同时也希望大家提出自己的看法,共同进步。
方案一:采用ZooKeeper支持的digest方式,用户自己定义节点的权限
这种方案将zookeeper的acl和digest授权认证模式相结合。具体操作流程如下:
可以把这个访问授权过程看作是用户注册,系统给你一个密码,每次操作使用这个用户名(appName)和密码. 于是就可以对应有这样权限管理系统,专门是负责进行节点的创建申请:包含“申请私有节点”和“申请公有节点”。这样一来,节点的创建都是由这个权限管理系 统来负责了,每次申请完后,系统都会返回给你的一个key,格式通常是“{appName}:{password}”,以后你的任何操作都要在zk session 中携带上这个key,这样就能进行权限控制。当然,用户自己通过zk客户端进行path的创建也是可以的,只是要求他们要使用授权方式来进行zk节点的创建。整个权限控制流程的代码测试,如下图所示:源代码见附件。
注意:ZooKeeper原生的API是支持这种方式的,但是GitHub上的zkclient目前还不支持,我已经在它基础上添加了权限控制接口,测试通过。如果你正在使用这个客户端,那么不妨尝试一下。( https://github.com/nileader/zkclient)
方案二、对zookeeper的AuthenticationProvider进行扩展,和内部其它系统A打通,从系统A中获取一些信息来判断权限
这个方案大致是这样: 1.A系统上有一份IP和appName对应的数据本地。 2.将这份数据在ZK服务器上缓存一份,并定时进行缓存更新。 3.每次客户端对服务器发起请求的时候,获取客户端ip进行查询,判断是否有对应appName的权限。限制指定ip只能操作指定 /appName znode。 4.其它容灾措施。
个人比较两个方案 1.方案一较方案二,用户的掌控性大,无论线上,日常,测试都可以由应用开发人员自己决定开启/关闭权限。 (方案一的优势) 2.方案二较方案一,易用性强,用户的使用和无权限基本一致。 (方案二的优势) 3.方案一较方案二更为纯洁。因为我觉得zk本来就应该是一个底层组件,让他来依赖其它上层的另一个系统?权限的控制精度取决于系统A上信息的准确性。 (方案一的优势)
分享到:
相关推荐
Zookeeper权限控制代码,并且描述了在linux客户端指令鉴权
ZooKeeper权限控制样例程序,配合文档:http://blog.csdn.net/nileader/article/details/43014541
java的spring-boot工程使用digest方式对zookeeper进行权限控制,包括初始化zk,以及增删改查等
Zookeeper-ACL权限控制
java连接zookeeper,并增加acl权限,增加节点,删除节点,对业务进行操作
zookeeper的Acl权限控制 zookeeper的javaApi zookeeper 事件监听机制 zookeeper 集群搭建 一致性协议:zab协议 zookeeper的leader选举 observer角色及其配置 zookeeperAPI连接集群 zookeeper 开源客户端curator介绍 ...
Zookeeper,作为一个关键的分布式应用协调框架,在多节点协作和数据同步方面发挥着不可或缺的作用。...此外,还涵盖了Zookeeper的ACL权限控制和内存数据与持久化机制,为读者提供了全面深入的技术视角。
这是一个整合了SSM框架+dubbo+zookeeper的java项目,运用到了项目中常用的权限控制,读写分离等技术,是一个学习java技术非常好的项目
ZAB协议用途,Zookeeper角色分配,搭建Zookeeper集群,Zookeeper命令,Zookeeper的存储模型,ZKServer的监听机制,ACL权限控制,四字命令,Java访问Zookeeper,分布式协调框架,Zookeeper环境搭建
文章目录1. ZooKeeper 是什么?2. ZooKeeper 提供了... ACL 权限控制机制11. Chroot 特性12. 会话管理13. 服务器角色14. Zookeeper 下 Server 工作状态15. 数据同步16. zookeeper 是如何保证事务的顺序一致性的?17.
简单权限控制下的zookeeper管理项目 步骤: 1,使用maven构建项目 2,修改 项目\src\main\resources\zk.properties 文件为可用配置 userquery只能查询的用户 useradmin可修改数据的用户 h2con , h2user , h2password ...
项目概述:本项目是一个基于SSM...- 引入Spring Security,确保了系统的安全性,加强了身份验证和权限控制。 综合来说,这是一个集成了前沿技术栈的健康医疗项目,旨在通过高效的IT解决方案提升医疗服务质量和效率。
Java 分布式项(SSM、分布式Dubbo、全文检索Solr、Vue、Zookeeper、文件系统FastDFS、缓存Redis、单点登录CAS,权限控制Spring Security,跨域CORS) 技术选型 后端框架采用 Spring + SpringMVC + MyBatis + DubboX...
服务架构:dubbo、zookeeper 缓存:redission 持久化:mybatis 事务:JTA 令牌管理:JWT 学习收获: 记得住认证、鉴权的意义 记得住shiro的常用组件 会设计权限系统 能解决...
服务架构:dubbo、zookeeper;缓存:redission;持久化:mybatis;事务:JTA;令牌管理:JWT 学习收获:记得住认证、鉴权的意义;记得住shiro的常用组件;会设计权限系统;能解决前后端分离鉴权的问题;能解决会话...
史上最轻便好用的kafka ui界面客户端工具,可以在生产消息、消费消息、管理topic、管理group;可以支持管理多个kafka...支持权限控制,可以自定义不同环境的新增、修改、删除权限;默认分配只读权限,避免用户的误操作
轻便好用的kafka ui界面客户端工具...支持权限控制,可以自定义不同环境的新增、修改、删除权限;默认分配只读权限,避免用户的误操作 采用B/S架构,springboot + vue.js 前后端分离开发 依赖java环境,需要先安装jdk8+
wxw-springboot 以Java语言为主的各种项目实践,涵盖各个业务、各个功能 前言 现在市面上关于Java的教程和技术文章很多,其中有许多文章一上来就讲底层原理,这无疑给一些新手在理解上增加了难度,理解底层原理的...
权限控制:spring security ORM框架:spring data jpa 操作日志回显:websocket 前后端分离:angularjs+bootstrap 系统部署 多角色配置,不同角色区分环境和菜单权限。不同环境可以做不同配置,满足一般公司的基本...
29、SpringSecurity权限控制 30、整合Dubbo+Zookeeper 31、Shiro 32、SpringCloudNetflix-H版 33、JVM探究 34、JUC精讲 35、Git 36、Linux使用 37、Redis精讲 38、ElasticSearch 39、ActiveMQ 40、Docker上 41...