当前位置: 首页 > news >正文

dubbo源码_Dubbo源码-注册中心

Dubbo注册中心注册实现了分布式环境中个注册服务于发现,它记录了当前节点注册的服务和订阅服务,并可以动态加入订阅和服务,也可以动态取消订阅和服务。

注册中心源码按照包结构可以如下划分:

  1. api:包含了注册中心的所有的API和抽象实现类
  2. zookeeper:使用Zookeeper作为注册中心的实现
  3. redis:使用Redis作为注册中心的实现
  4. default:Dubbo基于内存的默认实现,
  5. multicast:multicast模式的服务注册于发现

工作流程:

  1. 当生产者启动时,回向注册中心写入自己的元数据信息,并订阅生产者、路由和配置元数据信息
  2. 消费者启动时,也会向数据中心写入自己的元数据信息,并订阅生产者、路由和配置元数据信息
  3. 服务治理中心(dubbo-admin)启动时,会同时订阅所有的消费者路由和配置元数据信息
  4. 每当有生产者离开或者有新的服务提供者加入时,注册中心生产者目录会发生改变,变化信息会动态通知给消费者、服务治理中心
  5. 每当消费者发起服务调用时,会异步将调用,统计信息等上报给监控中心(dubbo-monitor-simple)

59394592ac3e15c86254897e161e56c6.png
工作流程图

dubbo-registry中提供了四种注册中心实现,分别为:zookeeper(官方推荐),Redis,default,muticast这四种

Simple是一个单点Rpc服务,不支持集群,也不允许出现故障,是一个标准的Rpc服务。

multicast是广播模式,生产者启动时会广播自己的地址,消费者启动时会广播订阅请求,生产者收到订阅请求就会根据广播或单播给订阅者。此模式十分不安全。

dubbo有非常良好的扩展性,如果以上四种不能满足业务,用户可以自行扩展。

相关文章:

  • python运行不了、显示警告_Python xlrd:禁止显示警告消息
  • linux安装python3环境_Linux环境安装python3
  • 用python打印出一个人的照片_Python用dilb提取照片上人脸的示例
  • getdata提取曲线数据_基于Hypergraph创建曲线(矢量)的结果响应
  • ffmpeg 为取经而来_清华,那个穿越百年而来的白衣少年
  • python 数组 动态赋值_在python中使用numpy创建动态数组
  • java filter 是否能拦截到form表单的所有数据_java 知识点总结(框架篇)
  • python使用xlrd读取xlsx文件_python操作excel文件一(xlrd读取文件)
  • 如何在桌面上显示一行字_只需一个命令启动Hyper-V虚拟机,高手们是如何做到的
  • python相对路径怎么写_Python代码写的丑怎么办?试试这几款神器!
  • java商品管理txt_Java 异常处理的六个建议
  • python里input是什么意思_Tensorflow:标签中的“input”和“input”是什么意思_图像.py在tensorflow示例中...
  • python3自动化软件发布系统pdf_Python 3自动化软件发布系统 -Django 2实战
  • java字符串压缩后反而变长了_不得不爱的数据结构和算法,BAT面试必考,想进大厂不可错过——百战Java课程更新08.17...
  • python nodejs php_Python,Javascript(NodeJS),PHP之间的AES加密解密
  • avalon2.2的VM生成过程
  • ES6 学习笔记(一)let,const和解构赋值
  • Java 网络编程(2):UDP 的使用
  • Leetcode 27 Remove Element
  • Redux系列x:源码分析
  • Spring声明式事务管理之一:五大属性分析
  • vue学习系列(二)vue-cli
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • XML已死 ?
  • 聊聊hikari连接池的leakDetectionThreshold
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 微服务框架lagom
  • 原生Ajax
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​如何在iOS手机上查看应用日志
  • #ifdef 的技巧用法
  • %@ page import=%的用法
  • (02)Hive SQL编译成MapReduce任务的过程
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (6)添加vue-cookie
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (九)信息融合方式简介
  • (七)理解angular中的module和injector,即依赖注入
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转载)Google Chrome调试JS
  • .bashrc在哪里,alias妙用
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET 8.0 中有哪些新的变化?
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net 无限分类
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @Autowired标签与 @Resource标签 的区别
  • [ 第一章] JavaScript 简史
  • [BUG]vscode插件live server无法自动打开浏览器
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [BZOJ] 2044: 三维导弹拦截
  • [C#]扩展方法