拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Apereo CAS 配置中心接入 Apache ZooKeeper:Spring Cloud Configuration Server 实战指南

Apereo CAS 配置中心接入 Apache ZooKeeper:Spring Cloud Configuration Server 实战指南 后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载Apereo CAS 的 Spring Cloud Configuration Server 支持把 Apache ZooKeeper 作为外部化配置源将 CAS 的各类设置cas.*属性存放在 ZooKeeper 节点中统一管理实现配置与应用程序包解耦。本文基于 CAS 仓库中 Configuration-Server-Management-SpringCloud-ZooKeeper.md 文档结合 cas-server-support-configuration-cloud-zookeeper 模块源码与测试用例完整讲解依赖引入、ZooKeeper 节点结构设计、节点创建与值引用、spring.cloud.zookeeper.*属性以及健康检查端点帮助读者直接落地一套可运行的 ZooKeeper 配置源方案。一、功能定位ZooKeeper 作为配置源的两种用法Spring Cloud Configuration Server 可以借助 Apache ZooKeeper 定位 CAS 的属性和设置properties and settings让运维人员在不重新构建、不修改应用包的前提下动态调整 CAS 行为。文档同时给出了一条重要说明本模块并不专属于 Spring Cloud Configuration server配置模块可以原样verbatim用在 CAS server overlay 中——也就是说即使你没有单独部署 Spring Cloud Config Server也可以直接把这个依赖加进 CAS 服务器工程让 CAS 自身从 ZooKeeper 拉取配置。两种场景下模块的用法一致只是承载配置的服务端不同场景 A推荐CAS 作为客户端Spring Cloud Configuration Server 负责从 ZooKeeper 读取配置并下发场景 BCAS overlay 直接内嵌该模块绕过 Config Server直接连接 ZooKeeper 取配置。二、引入依赖WAR Overlay 中的模块配置在 CAS WAR overlay或 Spring Cloud Configuration Server 工程中需要加入以下依赖模块implementation org.apereo.cas:cas-server-support-configuration-cloud-zookeeper在仓库中该模块的构建定义位于 support/cas-server-support-configuration-cloud-zookeeper/build.gradle其模块描述为从 Apache ZooKeeper 加载 CAS 配置使设置可以在应用程序包之外管理并且被归入Configuration Management配置管理类别。从依赖清单可以看到它直接依赖libraries.springcloudzookeeperSpring Cloud ZooKeeper 起步依赖libraries.zookeeperApache ZooKeeper 客户端libraries.springcloudbus与libraries.springcloudbootstrapCAS 侧的核心模块cas-server-core-configuration-api、cas-server-core-util-api、cas-server-core-authentication-api、cas-server-core-web-api其中 ZooKeeper 客户端的版本由仓库版本目录 gradle/libs.versions.toml 统一管理当前锁定为zookeeper 3.9.6同时引用了 Spring Cloud 官方的spring-cloud-starter-zookeeper-config、spring-cloud-starter-zookeeper-discovery等起步模块。三、设计节点结构把 CAS 属性映射到 ZooKeeper 节点要让 ZooKeeper 成为有效的配置源关键在于把 CAS 设置映射为 ZooKeeper 中承载值的节点znode。文档给出的映射规则如下父节点所有设置的父节点必须与提供给 CAS 的**配置根configuration root**相匹配子文件夹即 Profile在根节点之下可以按 Spring Profile 划分出多个子路径例如cas、cas,dev、cas,local——其中dev、local就是 Spring 环境 Profile 的名称。以文档示例为基础一个典型的节点树为/cas ├── config │ └── cas │ ├── cas ← 默认 Profile 分支 │ ├── cas,dev ← dev Profile 分支 │ └── cas,local ← local Profile 分支也就是说节点路径…/cas/application-name下面的直接子节点名对应具体配置项节点的内容value就是该配置项的值。CAS 启动时会按当前激活的 Profile 从对应的分支中读取配置值。四、创建节点并写入配置值zookeeper-client 实战命令文档给出了使用官方zookeeper-client交互式客户端创建节点和值的完整示例。启动客户端并连接到 ZooKeeper 集群zookeeper-client -server zookeeper1:2181进入交互终端后依次执行以下create命令创建目录结构和配置节点create /cas cas create /cas/config cas create /cas/config/cas cas create /cas/config/cas/settingName casuser::Test命令含义说明命令作用create /cas cas创建根节点/cas值为cascreate /cas/config cas创建/cas/config值为cascreate /cas/config/cas cas创建应用分支/cas/config/cas值为cascreate /cas/config/cas/settingName casuser::Test创建配置项节点值casuser::Test文档特别提醒在 Apache ZooKeeper 中创建节点/目录时可能需要提供一个值如上面创建目录时提供的cas但这一步并非绝对必需具体以官方 Apache ZooKeeper 指南为准——某些版本或场景下可以省略目录节点的值。settingName节点的内容casuser::Test正是随后要在 CAS 属性中引用的真实配置值。五、在 CAS 属性中引用节点值节点创建完成后即可在 CAS 属性文件中通过${settingName}占位符引用该节点的内容。文档给出的用法如下# cas.something.something${settingName}其中${settingName}的值就是 ZooKeeper 节点/cas/config/cas/settingName的内容本例即casuser::Test。这样配置项的真实值完全由 ZooKeeper 维护属性文件里只保留占位引用达到配置外部化的效果。六、Spring Cloud ZooKeeper 关键属性与源码验证本模块通过 Spring Cloud ZooKeeper 的配置引导bootstrap机制工作。仓库中的集成测试 ZooKeeperCloudConfigBootstrapConfigurationTests.java 直接印证了底层实现与参数用法——测试类同时装配了 Spring Cloud 的ZookeeperConfigBootstrapConfiguration和ZookeeperConfigAutoConfiguration并通过如下属性驱动spring.cloud.zookeeper.enabledtrue spring.cloud.zookeeper.config.enabledtrue spring.cloud.zookeeper.config.watcher.enabledtrue spring.cloud.zookeeper.connect-stringlocalhost:2181 spring.application.namecas这些属性的作用如下属性说明spring.cloud.zookeeper.enabled是否启用 ZooKeeper 集成测试中设为truespring.cloud.zookeeper.config.enabled是否启用 ZooKeeper 配置PropertySource支持spring.cloud.zookeeper.config.watcher.enabled是否启用配置变更监听Watcher开启后节点值变化可被感知spring.cloud.zookeeper.connect-stringZooKeeper 服务端连接串如localhost:2181支持多地址逗号分隔spring.application.name应用名测试中为cas与节点树中的应用分支对应测试的逻辑完整复现了本文的配置流程可作为排错时的参照测试前置阶段使用Apache Curator FrameworkCuratorFrameworkFactory.newClient(localhost:2181, 5000, 5000, new RetryNTimes(2, 100))连接 ZooKeepercurator.start()后以PERSISTENT模式、OPEN_ACL_UNSAFE权限创建节点/config/cas/cas/server/name节点值为字符串apereocas随后在测试断言中校验casProperties.getServer().getName()返回apereocas——证明 ZooKeeper 节点内容已被正确解析为 CAS 的cas.server.name属性并注入CasConfigurationProperties。从该测试可以推断除了zookeeper-client命令行你同样可以使用 Curator 客户端或任何 ZooKeeper 客户端库以编程方式创建节点两种方式写入的数据最终都会被 Spring Cloud ZooKeeper 配置源读取。七、Actuator 端点健康检查与配置刷新启用本模块后CAS 提供以下 Actuator 端点用于运维监控端点说明health整体健康检查其中包含zookeeperHealthIndicator指标用于反映 ZooKeeper 连接/状态健康度refresh触发配置刷新用于重新拉取/应用 ZooKeeper 中变更后的配置值配合spring.cloud.zookeeper.config.watcher.enabledtrue开启 Watcher 后ZooKeeper 节点内容的变化可以被实时感知再结合refresh端点即可实现配置的热更新闭环改节点 → 感知变更 → 刷新配置 → 新值生效。八、本地验证Docker 快速起一个 ZooKeeper仓库的 CI 脚本 run-zookeeper-server.sh 提供了开箱即用的本地实验环境可直接参照export DOCKER_IMAGEzookeeper:latest docker run --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 -p 8080:8080 -d ${DOCKER_IMAGE}其中2181为客户端端口对应上文connect-string中的localhost:21812888/3888为集群内部通信端口8080为管理端口。容器就绪后即可依次执行上文第 4 节的create命令建立节点树再在 CAS 属性文件中引用节点值完成一次完整的ZooKeeper 配置源演练。小结把 Apache ZooKeeper 接入 CAS 的 Spring Cloud Configuration Server核心只有三步加依赖、建节点、做引用。节点树的根对应配置根、子目录对应 Spring Profile、叶子节点内容即配置值${settingName}占位符把 CAS 属性与 ZooKeeper 节点内容绑定health、refresh端点与 Watcher 机制共同支撑配置的监控与热更新。仓库中的模块源码 build.gradle 与集成测试 ZooKeeperCloudConfigBootstrapConfigurationTests.java 是排错与深入理解的最佳参考更多细节可查阅原始文档 Configuration-Server-Management-SpringCloud-ZooKeeper.md。赞分享后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载相关推荐OmenSuperHub如何让你的惠普游戏本性能翻倍这个免费开源工具做到了OmenSuperHub如何让你的惠普游戏本性能翻倍这个免费开源工具做到了 你是否曾经在激烈的游戏对战中突然遭遇帧率骤降风扇狂转却依然烫手的窘境或者在后端认证鉴权单点登录Apereo CAS 接入 Amazon Cloud Directory 认证配置、原理与排障实战Apereo CAS 接入 Amazon Cloud Directory 认证配置、原理与排障实战 导读 本文基于 Apereo CAS 官方文档 AWS C后端认证鉴权单点登录Apereo CAS 配置热重载Configuration Reload原理、端点与实战指南Apereo CAS 配置热重载Configuration Reload原理、端点与实战指南 CAS 作为一款基于 Spring Cloud 构建的企业级后端认证鉴权单点登录上一篇终极ImStudio简单易用的Dear ImGui GUI设计器下一篇3步掌握Forza Painter从图片到游戏贴花的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表