Zookeeper API使用中一个case备忘

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。 zk的API 和 封装后的API,语义和原生的执行行为,要自己进去瞅瞅。

教训    

zkAPI 和 封装后的API,语义和原生的执行行为,要自己进去瞅瞅      

zk 里面bytes的编解码要保持一致    

createset 以及reset要区分来。第一次create,之后是set以及reset


需求背景  

需要重建路径,然后写入状态信息。要求,路径不存在,就创建后写入;如果存在,直接覆盖老的内容。


遇到问题    

覆盖和创建API 不能混用,特别是自己封装后的API,语义可能与zookeeper原生的不一致。覆盖写,默认path 已经存在;创建写,默认path 不存在。如果path存在,然后create 其实无效。可能存在写丢失。    

setData 里面的byte,获取后的转化。通常是string .getBytes. 如果遇到int2bytes 或者 object2bytes 啥的,那么解码byte的时候需要保持读写一致,如果没有文档说明,就之后测试了。


解决方法    

exist path,然后决定是set or create
    create
的时候,如果failed,执行写第二次。


部分代码

privatevoidfeedbackForGroup(booleanisSuc, Stringmsg, StringusrPoint){TerminatorZkClientzkClient=ZkClientHolder.zkClient;StringpathApp=fullDumpStatsZkPath+context.getServiceName();Stringid=context.getCoreName().split("-")[1];StringpathGroup=pathApp+"/"+id;if(isSuc){StringsucMsg=(SuccessTag+usrPoint+"\"}").toString();try{if(zkClient.exists(pathGroup)){zkClient.setData(pathGroup, sucMsg.getBytes());}else{booleancreateStatus=zkClient.createPathIfAbsent(pathGroup, sucMsg.getBytes(), true);if(!createStatus){booleanrecreateStatus=zkClient.createPathIfAbsent(pathGroup, sucMsg.getBytes(), true);if(!recreateStatus)logger.error("---->Rewrite group failed -- FeedBack for group fulldump sucess_status to zk. Path="+pathGroup+",sucMsg="+sucMsg);elselogger.warn("Rewriter group ok-- FeedBack for group fulldump sucess_status to zk. Path="+pathGroup+",sucMsg="+sucMsg);}elselogger.warn("Writer group ok-- FeedBack for group fulldump sucess_status to zk ok. Path="+pathGroup+",sucMsg="+sucMsg);}}catch(TerminatorZKExceptione){logger.error("feedback for group -- sucess back zk excption", e);}}else{//failedgroupthenfailedappStringfailMsg=(FailedTag+msg+"\"}").toString();try{if(zkClient.exists(pathGroup)){zkClient.setData(pathGroup, failMsg.getBytes());}else{booleancreateStatus=zkClient.createPathIfAbsent(pathGroup, failMsg.getBytes(), true);if(!createStatus){booleanrecreateStatus=zkClient.createPathIfAbsent(pathGroup, failMsg.getBytes(), true);if(!recreateStatus)logger.error("---->Rewriter group failed-- FeedBack for group fulldump failed_status to zk. Path="+pathGroup+",failMsg="+failMsg);elselogger.warn("Rewriter group ok-- FeedBack for group fulldump failed_status to zk. Path="+pathGroup+",failMsg="+failMsg);}elselogger.warn("Writer group ok-- FeedBack for group fulldump failed_status to zk. Path="+pathGroup+",failMsg="+failMsg);}}catch(TerminatorZKExceptione){logger.error("feedback for group -- failed back zk exception",
e);}}}
目录
相关文章
|
1月前
|
API 微服务
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态。
163 26
|
2月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
454 142
API 微服务
90 0
|
3月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 8 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
459 152
|
4月前
|
API
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
|
4月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
4月前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态
微服务引擎 MSE 及云原生 API 网关 2025 年 6 月产品动态
|
4月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 6 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
5月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 5 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
下一篇
oss云网关配置