首页 > 其他分享 >dubbo-registry-api服务注册

dubbo-registry-api服务注册

时间:2024-05-07 14:48:50浏览次数:17  
标签:dubbo URL 创建 接口 api registry 注册 RegistryFactory Registry

底层接口

  • Registry 接口:继承RegistryService与Node两个接口
  • RegistryService 接口:定义了Registry的注册、注销、订阅、取消订阅事件、lookup接口
  • Node 接口:定义getUrl、isAvailable、destroy接口

中间层接口

RegistryFactory 接口:定义了根据URL创建Registry的方法

RegistryServiceListener 接口:构造器需要URL与Registry,定义了Registry的注册、注销、订阅、取消订阅事件接口

上层实现类

RegistryFactoryWrapper类:实现RegistryFactory接口(接口定义了根据URL创建Registry方法),构造器需要RegistryFactory入参,调用RegistryFactory创建Registry对象,根据Registry对象与入参URL创建ListenerRegistryWrapper(实现Registry接口)对象

ListenerRegistryWrapper 类:实现了Registry的注册、注销、订阅、取消订阅事件接口,构造器需要Registry与List<RegistryServiceListener>两个入参

RegistryFactory 接口

定义了根据URL创建Registry的方法

如何根据URL创建Registry

  • 根据URL中的接口、方法、version等信息拼接唯一key
  • 根据key从registryManager获取Registry对象,如果不存在,需要创建
  • 创建Registry对象:通过spi/ioc创建Registry对象,具体的创建方式包括nacos、zookeeper、k8s等RegistryFactory创建,以nacos为例,就是在nacos中注册一个服务name
  • 将新创建的Registry对象存储到registryManager中

RegistryFactory实现类如下:

AbstractRegistryFactory抽象类

内部需要RegistryManager与ApplicationModel两个入参

RegistryManager

应用程序级别,用于收集Registry,内部维护Map<String, Registry>,key为RegistryAddress地址

ApplicationModel

包含了应用级别的各种全局变量

  • List<ModuleModel> moduleModels:
  • List<ModuleModel> pubModuleModels:
  • Environment:环境变量,PropertiesConfiguration、SystemConfiguration、SystemConfiguration等
  • ConfigManager:配置管理,ApplicationConfig、MonitorConfig、MetricsConfig、SslConfig、ProtocolConfig、RegistryConfig、ConfigCenterConfig、MetadataReportConfig、TracingConfig.class
  • ServiceRepository:(生产者、消费者)服务存储,可以通过此类获取所有生产者(ProviderModel)、消费者(ConsumerModel)模型(都集成了ServiceModel类)
  • ApplicationDeployer:应用发布接口,通过该对象可以进行应用参数初始化、启动、停止、销毁等操作
  • FrameworkModel:dubbo框架模型,可与多个应用程序共享数据模型

Registry实现类

根据使用不同的注册中心会封装不同的Registry实现类。

 

标签:dubbo,URL,创建,接口,api,registry,注册,RegistryFactory,Registry
From: https://www.cnblogs.com/use-D/p/18177273

相关文章

  • toapi:抓取任意网页内容并提供 HTTP API获取数据
    Github地址:https://github.com/elliotgao2/toapiPythonToapi是一个基于XPath和CSS选择器的WebAPI框架,它能够快速将网页内容转换为结构化的API。Toapi提供了简单易用的接口,使得开发者可以轻松地从网页中提取数据,并以API的形式呈现出来。同时,Toapi支持自定义规则和过......
  • 475-便携式手提RapidIO协议光纤发包测试仪
    便携式手提RapidIO协议光纤发包测试仪一、平台简介   便携式手提RapidIO协议光纤发包仪,以RapidIO收发卡和X86主板为基础,构建便携式的手提设备。   RapidIO收发卡是以KU060PCIeX4的双路QSFP+光纤收发卡,支持双路RapidIOX4数据的收发设计。   ......
  • dubbo-TpsLimitFilter
    提供者端限流从调用url中获取接口、方法名、version、serviceKey,根据上面几个参数进行拼接限流key。限流方式DefaultTPSLimiter本地维护一个ConcurrenMap,key为限流的key(接口、方法名、version、serviceKey),value为StatItem对象,StatItem中定义了限流基础信息,rate、interval、las......
  • dubbo-ActiveLimitFilter
    服务消费者端限流ActiveLimitFilter限制客户端对interface或method的并发客户端调用。限流方式从url中获取actives并发数量,actives大于0进行并发控制,actives小于等于0不控制。消费者端使用RpcStatus下的ConcurrentMap<String,ConcurrentMap<String,RpcStatus>>存储每个metho......
  • dubbo-AdaptiveLoadBalance
    AdaptiveLoadBalance使用AdaptiveLoadBalanceFilter初始化的数据。核心处理org.apache.dubbo.rpc.cluster.loadbalance.AdaptiveLoadBalance#selectByP2Corg.apache.dubbo.rpc.cluster.loadbalance.AdaptiveLoadBalance#chooseLowLoadInvokerorg.apache.dubbo.rpc.AdaptiveMet......
  • dubbo2.7.x版本下,服务调用时参数丢失问题
    问题:A服务调用B,C两个服务,在A调用之前RpcContext设置了业务上的透传参数,希望在本次调用全程,在任何地方都能获取到这个参数,但是在A调用完B后,该参数丢失。排查:代码中自定义实现了两个filter,分别时provider和consumer两个Filter,但里面都没有清空参数的逻辑。后面经过排查,dubbo有个......
  • 一键接入大模型:One-Api本地安装配置实操
    前言最近准备学习一下SemanticKernel,OpenAI的Api申请麻烦,所以想通过One-api对接一下国内的在线大模型,先熟悉一下SemanticKernel的基本用法,本篇文章重点记录一下OneApi安装配置的过程。讯飞星火有3.5模型的200w个人免费token,可以拿来学习。讯飞星火申请链接......
  • 第二天:设计数据库和服务器API
    第二天:设计数据库和服务器API确定统计分析功能的要求,包括计算护工工时、服务患者数量等统计指标。定义家属监控功能,包括家属账号注册、查看护工工作状态和服务记录等功能。确定紧急救援功能,包括触发紧急求助、联系紧急联系人或机构等功能。设计应用程序的用户界面(UI)和用户体......
  • 路由跳转、相关api、路由守卫、路由两种工作模式
    【router基本使用(路由跳转,携带数据)】#######跳转#######-js跳转this.$router.push(路径)this.$router.push(对象)-this.$router.push({name:'路由别名'})-this.$router.push({path:'路径'})-组件跳转......
  • 通过API触发airflow的DAG任务
    背景以前编写的DAG都是通过定时触发的,当前有一个场景需要通过手动提交API来触发,这样能够在用户需要的时候,主动触发执行任务,于是就有了这篇内容的摸索。之前只知道airflow支持通过API来触发任务,但是具体如何操作是真不会,看了官方的API文档,也没找到具体方法,特别是认证这块一直没解......