前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何动态获取Dubbo服务提供方地址列表

如何动态获取Dubbo服务提供方地址列表

作者头像
加多
发布2019-05-15 14:05:33
4K0
发布2019-05-15 14:05:33
举报
文章被收录于专栏:Java编程技术Java编程技术

一、前言

dubbo框架本身提供了丰富的负载均衡策略,比如轮询、随机、最少活跃调用数、一致性hash等,但是有时候我们需要自己根据业务指定某个ip来进行调用。要指定ip进行调用就需要先知道服务提供者的ip。本文我们先来探讨第一步,当服务注册中心使用zookeeper时候如何获取某一个服务的提供端的地址列表。

二、实现

我们知道当服务提供方启动时候,会注册服务到服务注册中心,本文我们通用zookeeper,比如服务com.books.dubbo.demo.api.GreetingService则注册到zk后,是下面树形结构

image.png

那么当消费端启动时候会去zookeeper上订阅path为/dubbo/com.books.dubbo.demo.api.GreetingService/providers下面的信息,也就是服务提供者列表信息,那么我们就可以基于这个原理来获取某一个服务提供者列表,然后对信息进行过滤加工,并且注册一个监听器,当服务提供者机器增减后,动态更新保存的地址列表。

基于上面原理实现代码如下:

如上代码main函数创建了一个ZookeeperIpList对象,并且调用其init方法,参数分别为zk地址,zk分组,服务接口以及版本,服务分组。

init方法内首先拼接要订阅的zk的path,拼接完成后dataid为/dubbo/com.books.dubbo.demo.api.GreetingService/providers,然后创建zkclient订阅该dataid对应的path,并且注册监听器,当path下信息变化后会得到最新列表。

并且使用parseIpList方法解析获取的地址列表为ip:port个数,解析完毕后保存到ipList中。

三、总结

本节介绍了一个简单的基于zookeeper获取服务提供者地址列表的方法,后面我们看如何指定ip进行调用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.05.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、实现
  • 三、总结
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档