Dubbo3 应用级服务发现最佳实践

Dubbo3 概述

Dubbo3以基于应用级别的服务发现,适应云原生技术两大诉求发展而来。那升级dubbo3.0后能带来哪些好处呢?

按官方说法,以下是官网的原文

相比于 2.x 版本中的基于接口粒度的服务发现机制,3.x 引入了全新的基于应用粒度的服务发现机制, 新模型带来两方面的巨大优势:

  • 进一步提升了 Dubbo3 在大规模集群实践中的性能与稳定性。新模型可大幅提高系统资源利用率,降低 Dubbo 地址的单机内存消耗(50%),降低注册中心集群的存储与推送压力(90%), Dubbo 可支持集群规模步入百万实例层次。
  • 打通与其他异构微服务体系的地址互发现障碍。新模型使得 Dubbo3 能实现与异构微服务体系如Spring Cloud、Kubernetes Service、gRPC 等,在地址发现层面的互通, 为连通 Dubbo 与其他微服务体系提供可行方案。

公司部署的Dubbo2.x服务面临的主要问题

先看下dubbo2.x经典的工作原理图

1、我们都知道,Dubbo2.x是基于接口级别的服务发现,现在都是微服务当道,每个服务至少几十上百个接口,对于业务处于快速发展的我们,每个月不停有项目产品上线,每个项目少则十几个微服务,多则几十个微服务,加上存量的上千个微服务,导致注册节点的数据量非常大。

假如一个微服务应用有100个接口,每个应用部署10台机器,那么zookeeper的目录下有100个全限定名接口目录(注:我们公司是zookeeper作为注册中心),而每个接口目录的provider下有10个机器url,每个url只是IP和Port不同,其他参数诸如重试次数、接口的容错策略等都是相同的,就会产生1000条重复数据,增加了注册中心的压力。

zookeeper节点如下:

2、另外,消费者服务也需要订阅注册中心存储的服务接口的providers目录,因为要感知服务提供者接口的上下线,以更新本地缓存接口列表。

3、还有一个原因,当一个节点下线时,假设有100个接口,消费服务会收到100个订阅通知,对消费端服务来说也增加了不少cpu压力、常驻内存已超40%。

替换成Dubbo3.0后的效果

图一

图一 服务发现模型内存占用变化

图一是消费端进程采样的内存对比数据。其中横轴是dubbo版本,纵轴是实际内存表现

  • Dubbo3 接口级服务发现模型,常驻内存较 2.x 版本下降约 50%
  • Dubbo3 应用级服务发现模型,常驻内存较 2.x 版本下降约 73%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值