Zookeeper API使用中一个case备忘

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。 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实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
18天前
|
API
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
|
18天前
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 4 月产品动态
阿里云微服务引擎及 API 网关 2024 年 4 月产品动态。
|
18天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 04 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
18天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
39 11
|
18天前
|
API
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态。
|
18天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 03 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
18天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 02 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
10月前
|
API
Zookeeper学习---2、客户端API操作、客户端向服务端写数据流程
Zookeeper学习---2、客户端API操作、客户端向服务端写数据流程
Zookeeper学习---2、客户端API操作、客户端向服务端写数据流程
|
18天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
33 0
|
18天前
|
存储 Java API
ZooKeeper【客户端的API操作、写数据流程】
ZooKeeper【客户端的API操作、写数据流程】