首页 > 其他分享 >dubbo3小记

dubbo3小记

时间:2024-10-28 14:20:53浏览次数:3  
标签:Dubbo 数据中心 服务 注册 地址 应用 dubbo3 小记

开启服务注册模式

Dubbo3 服务发现平滑迁移步骤与原理

https://cn.dubbo.apache.org/zh-cn/blog/2024/05/13/如果从接口级服务发现平滑迁移到应用级服务发现/

image

全局开关

应用配置(可以通过配置文件或者 -D 指定)dubbo.application.register-mode 为 instance(只注册应用级)、all(接口级+应用级均注册)开启全局的注册开关,配置此开关后,默认会向所有的注册中心中注册应用级的地址,供消费端服务发现使用。

可选值 interface、instance、all,默认是 all,即接口级地址、应用级地址都注册

# 双注册
dubbo.application.register-mode=all

# 仅应用级注册
dubbo.application.register-mode=instance

双注册带来的资源消耗

双注册不可避免的会带来额外的注册中心存储压力,但考虑到应用级地址发现模型的数据量在存储方面的极大优势,即使对于一些超大规模集群的用户而言,新增的数据量也并不会带来存储问题。总体来说,对于一个普通集群而言,数据增长可控制在之前数据总量的 1/100 ~ 1/1000

以一个中等规模的集群实例来说: 2000 实例、50个应用(500 个 Dubbo 接口,平均每个应用 10 个接口)。

​ 假设每个接口级 URL 地址平均大小为 5kb,每个应用级 URL 平均大小为 0.5kb

​ 老的接口级地址量:2000 * 500 * 5kb ≈ 4.8G

​ 新的应用级地址量:2000 * 50 * 0.5kb ≈ 48M

​ 双注册后仅仅增加了 48M 的数据量。

应用级服务发现工作原理

Dubbo3 应用级服务发现官方文档

image

Dubbo3 应用级服务发现官方文档

服务提供者启动,首先解析应用定义的“普通服务”并依次注册为 RPC 服务,紧接着注册内建的 MetadataService 服务,最后打开 TCP 监听端口。

启动完成后,将实例信息注册到注册中心(仅限 ip、port 等实例相关数据),提供者启动完成。

服务消费者启动,首先依据其要“消费的 provider 应用名”到注册中心查询地址列表,并完成订阅(以实现后续地址变更自动通知)。

消费端拿到地址列表后,紧接着对 MetadataService 发起调用,返回结果中包含了所有应用定义的“普通服务”及其相关配置信息。
至此,消费者可以接收外部流量,并对提供者发起 Dubbo RPC 调用

image

服务自省中的关键机制

元数据同步机制
Client 与 Server 间在收到地址推送后的配置同步是服务自省的关键环节,目前针对元数据同步有两种具体的可选方案,分别是:

  • 内建 MetadataService。(dubbo3)
  • 独立的元数据中心,通过中心化的元数据集群协调数据。(dubbo2)
  1. 内建 MetadataService MetadataService 通过标准的 Dubbo 协议暴露,根据查询条件,会将内存中符合条件的“普通服务”配置返回给消费者。这一步发生在消费端选址和调用前。

  2. 元数据中心 复用 2.7 版本中引入的元数据中心,provider 实例启动后,会尝试将内部的 RPC 服务组织成元数据的格式同步到元数据中心,而 consumer 则在每次收到注册中心推送更新后,主动查询元数据中心。

注意 consumer 端查询元数据中心的时机,是等到注册中心的地址更新通知之后。也就是通过注册中心下发的数据,我们能明确的知道何时某个实例的元数据被更新了,此时才需要去查元数据中心。
image

RPC 服务 < - > 应用映射关系

image
Dubbo 之所以选择建立一套“接口-应用”的映射关系,主要是考虑到 service - app 映射关系的不确定性。一个典型的场景即是应用/服务拆分,如上面提到的配置<dubbo:reference interface="RPC Service 2" provided-by="provider-app-x" />,PC Service 2 是定义于 provider-app-x 中的一个服务,未来它随时可能会被开发者分拆到另外一个新的应用如 provider-app-x-1 中,这个拆分要被所有的 PC Service 2 消费方感知到,并对应用进行修改升级,如改为<dubbo:reference interface="RPC Service 2" provided-by="provider-app-x-1" />,这样的升级成本不可否认还是挺高的。 到底是 Dubbo 框架帮助开发者透明的解决这个问题,还是交由开发者自己去解决,当然这只是个策略选择问题,并且 Dubbo 2.7.5+ 版本目前是都提供了的。其实我个人更倾向于交由业务开发者通过组织上的约束来做,这样也可进一步降低 Dubbo 框架的复杂度,提升运行态的稳定性。

标签:Dubbo,数据中心,服务,注册,地址,应用,dubbo3,小记
From: https://www.cnblogs.com/lzghyh/p/18510475

相关文章

  • 【小记】探探学习平台的字体混淆dm
    正在某学习平台做题,想着把题目复制出来和搜索娘深入探讨一下,却发现:嗯?怎么是一坨火星文?实际上有好几个学习平台都引入了这种字体混淆机制以防止复制,打乱了部分汉字Unicode码点和字形的对应关系。这回咱就来折腾折腾,看看这是怎么个事儿。1.怎么个混淆法来到某课堂平台,打开......
  • 【小记】探探学习平台的字体混淆
    正在某学习平台做题,想着把题目复制出来和搜索娘深入探讨一下,却发现:嗯?怎么是一坨火星文?实际上有好几个学习平台都引入了这种字体混淆机制以防止复制,打乱了部分汉字Unicode码点和字形的对应关系。这回咱就来折腾折腾,看看这是怎么个事儿。1.怎么个混淆法来到某课堂平台,打开......
  • 2024/10/22 模拟赛小记
    A.日期速算_date题意:给你一个日期,然后问k天之后日期。形式如“20240229”。保证年份在2000-9999年。看榜的时候发现挂掉了,有点迷惑。发现思路没什么问题。把cin,cout改成scanf和printf就过了。。?。什么oj特色。Code#include<bits/stdc++.h>usingnamespacest......
  • Dify - 使用小记
    Dify-使用小记记录使用Dify创建小流程......
  • spring mybatis upgrade to mybatisplus 实战小记
    我司压箱底儿的灵工服务商系统,系统框架是spring,持久层是mybatis。最近,将Mybatisplus集成到系统中,以提高开发效率。升级版本:mybatis版本3.2.2,升级到3.5.16Mybatisplus版本:3.5.3mybatis-spring版本1.2.0,升级到3.0.0pagehelper版本:5.3.1【注】mybatis官方提供了Myba......
  • 竞赛图小记
    参考:link1,link2定义竞赛图是指一类对于任意两个点之间有且只有一条有向边的有向图,下面记\(G=(V,E),n=|V|,m=|E|\),我们称一个\(|V|=n\)的竞赛图为\(n\)阶竞赛图。性质竞赛图缩点后是链状结构考虑按照tarjan算法缩点后,对于\(col_u<col_v\),必有边\(v\tou\),这是因为......
  • NOIP 前 dp 做题小记
    NOIP前dp做题小记[BJOI2019]排兵布阵设\(f(i,j)\)表示在前\(i\)个城堡中总共派遣\(j\)个士兵时,可以获得的最大分数。初始化:\(\forall0\lej\lem\),\(f(0,j)=0\)答案统计:\(ans=f(n,m)\)转移:\(f(i,j)=\max_{0\lek\lej}f(i-1,j-k)+g(i,k)......
  • 拉格朗日插值小记
    对于\(n\)个点\((x_i,y_i)\),\(x_i\)互不相同,则我们可以唯一确定一个\(n-1\)次多项式经过这\(n\)点。1.算法介绍1.1拉格朗日插值拉格朗日插值的核心思想是每次只考虑一个点值,将其他点值都视作\(0\),即对于每一个点\((x_i,y_i)\),我们构造一个函数\(f_i(x)\)。当......
  • acam 小记
    acam作为多模匹配算法,很多东西与kmp相同,另外增添了fail树上操作的关键性质。朴素acam就是trie树,fail指针就是在当前node找一个后缀,使得在其他串存在一个前缀是这个后缀(类似kmp)。trie图,就是简单优化了这个"树上乱跳"的过程,补全每个节点的儿子,类似于路径压缩。其实......
  • 斜优小记
    一个启发是,对于一个\(i\)的两个转移\(j,k\),比较\(j\)与\(k\)的转移优劣。可以用斜率优化的场景:对比后可以分拆出\(slope(j,k)\le\texttt{只和i相关的一些东西}\)的形式。例如P3195,首先写出转移方程\(dp_i=\min\limits_{0\lej<i}\{dp_j+(s_i-s_j+i-j-1-L)^2\}\)比......