Zookeeper API使用中一个case备忘

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。 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);}}}
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
30天前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态。
|
3月前
|
存储 API Apache
【zookeeper 第三篇章】客户端 API
本文介绍了Apache ZooKeeper客户端的一些常用命令及其用法。首先,`create`命令用于创建不同类型的节点并为其赋值,如持久化节点、有序节点及临时节点等。通过示例展示了如何创建这些节点,并演示了创建过程中的输出结果。其次,`ls`命令用于列出指定路径下的所有子节点。接着,`set`命令用于更新节点中的数据,可以指定版本号实现乐观锁机制。
33 0
|
7天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
5月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 05 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
2月前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 8 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 8 月产品动态。
|
2月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 08 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
3月前
|
API
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态。
182 18
|
2月前
|
负载均衡 API 数据安全/隐私保护
Zookeeper的客户端-原生的API
Zookeeper的客户端-原生的API
|
4月前
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
158 26

热门文章

最新文章