Dubbo--kazoo库操作zk
从zk获取ip&port
- 使用kazoo库链接zk,并从zk的节点中获取rpc节点数据字符串,从中获取已注册dubbo服务的的ip和端口
- zoookeeper库也可以(我没调通,并且相关资料很少,不推荐)
from kazoo.client import KazooClient
from urllib.parse import unquotezk_ip = '10.12.224.14'
zk_host = 2181
server_name = 'com.bjpowernode.dubbo.service.UserService'zk = KazooClient(hosts=zk_ip + ':' + str(zk_host), read_only=True, timeout=30.0)
zk.start()
print(zk.state)# 获取节点
print(zk.get_children('/'))
print(zk.get_children('/dubbo'))
print(zk.get_children('/dubbo/'+server_name))# rpc
rpc_link = zk.get_children('/dubbo/' + server_name + '/providers')
print(rpc_link)# url解码
rpc_link = unquote("".join(rpc_link))
print(rpc_link)# 获取生产者ip端口
ip = rpc_link.split("/")[2].split(':')[0]
print(ip)
port = rpc_link.split("/")[2].split(':')[1]
print(port)# 停止zkClient
zk.stop()# 关闭连接
zk.close()
print(zk.state)
CONNECTED
['dubbo', 'zookeeper']
['com.bjpowernode.dubbo.service.UserService']
['consumers', 'configurators', 'routers', 'providers']
['dubbo%3A%2F%2F10.12.224.14%3A20880%2Fcom.bjpowernode.dubbo.service.UserService%3Fanyhost%3Dtrue%26application%3D007-zk-userservice-provider%26dubbo%3D2.6.2%26generic%3Dfalse%26interface%3Dcom.bjpowernode.dubbo.service.UserService%26methods%3DqueryUserById%26pid%3D44290%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1614648799799']
dubbo://10.12.224.14:20880/com.bjpowernode.dubbo.service.UserService?anyhost=true&application=007-zk-userservice-provider&dubbo=2.6.2&generic=false&interface=com.bjpowernode.dubbo.service.UserService&methods=queryUserById&pid=44290&revision=1.0.0&side=provider×tamp=1614648799799
10.12.224.14
20880
LOST
函数封装
from kazoo.client import KazooClient
from urllib.parse import unquotedef get_service_info_by_zk(zk_ip, dubbo_interface, zk_host=2181):"""连接zk获取已注册服务的ip/port:param zk_ip::param dubbo_interface::param zk_host::return: service_ip service_port"""zk = KazooClient(hosts=zk_ip + ':' + str(zk_host), read_only=True, timeout=30.0)zk.start()try:rpc_link = zk.get_children('/dubbo/' + dubbo_interface + '/providers')rpc_link = unquote("".join(rpc_link))service_ip = rpc_link.split("/")[2].split(':')[0]service_port = rpc_link.split("/")[2].split(':')[1]return service_ip, service_portexcept Exception as e:raise efinally:zk.stop()zk.close()
Dubbo--kazoo库操作zk相关推荐
- .NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper
.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper 參考演示样例代码,例如以下所看到的: /// <summary>/// MySql 数 ...
- lumen mysql 事务_简单几部搞定laravel/lumen跨库操作
1.跨库数据库配置 在网站跟目录下的config文件中增加database.php作为数据库配置文件.配置如下: //当前默认数据库'mysql' => [ 'driver' => 'my ...
- SAP 对HU做转库操作,系统报错 - 系统状态HUAS是活动的 - 分析
SAP 对HU做转库操作,系统报错 - 系统状态HUAS是活动的 - 分析 近日收到业务团队报的问题,说是对某个HU做转库时候,系统报错.如下图示: HU里有是三个序列号, 1191111034011 ...
- .NET WebAPI 用ExceptionFilterAttribute实现错误(异常)日志的记录(log4net做写库操作)
.NET WebAPI 用ExceptionFilterAttribute实现错误(异常)日志的记录(log4net做写库操作) 参考文章: (1).NET WebAPI 用ExceptionFilt ...
- 使用network管理DD恢复全库操作步骤
使用network管理DD恢复全库操作步骤 基本信息: 系统平台:RHEL 5.4_86_64 database版本:11.2.0.2.0-64bit 1.检查目标主机是否安装networker客户端 ...
- $cfg_dbtype = mysql_多库操作2:终于实现多个数据库操作
publicUnitOfWork( ISqlSugarClient sqlSugarClient){_sqlSugarClient = sqlSugarClient;} //获取DB,保证唯一性//p ...
- MySQl的库操作、表操作和数据操作
一.库操作 1.1库的增删改查 (1)系统数据库: performance_schema:用来收集数据库服务器的性能参数,记录处理查询时发生的各种事件.锁等现象 mysql:授权库,主要存储系统用户的 ...
- python 删除第三方库_python 安装移动复制第三方库操作
一.绪论 在使用python开发过程中经常会使用到第三方库.因此就涉及到了如何安装.复制移动. 二.安装方式 第三方库的安装方式 1.python自带包管理器:使用pip命令自动安装.例如:pip i ...
- Apache ZooKeeper - 使用Apache Curator操作ZK
文章目录 原生ZK API VS Curator Curator 概述 Maven依赖 会话创建 静态工厂方式创建会话 使用 fluent 风格创建会话 创建节点 protection 模式 ,规避僵 ...
最新文章
- windows环境下pip安装python的包时候提示invalid syntax (转载CSDN)
- JAVA里面的int类型 和Integer类型,有什么不一样
- 编程珠玑 15.3生成文本
- 电脑卡顿不流畅怎么解决_如何解决因电脑内存容量不足引起的卡顿?
- 学车比学计算机简单,帅哥自述:学车比上班还要累
- 查数估获近千万元融资 ,用科技为金融赋能
- mysql 判断字段为null表示 false 其它为true_日拱一卒,MySQL数据库 常用SQL优化技巧 十一式...
- AUTOSAR从入门到精通100讲(十八)-AUTOSAR操作系统OS
- 文件服务器有病毒,服务器共享文件会被病毒加密吗
- java山地自行车怎么看型号_怎么看捷安特山地车型号 请问有知道捷安特自行车型号...
- 饭卡 01背包 DP
- 555定时器的应用——施密特触发器
- 【现代通信原理笔记】6 信源编码
- Android TextToSpeech(tts)语音播报(文字转语音)
- chronodex怎么用_滴答清单使用全攻略:如何把手帐搬到滴答清单上,提升效率?...
- python汇率转换
- 麻省理工的服务器位置,美国麻省理工学院的地理位置
- JavaScript常见面试题
- Intellij idea 2020设置经典样式(背景为黑色Darcula)
- 嵌入式基础学习-U-Boot使用