当前位置: 首页 > 网络应用技术

Dubbo-Admin正式支持3.0服务治理

时间:2023-03-07 14:00:04 网络应用技术

  关于作者

  中间件开发爱好者Java开发工程师Cheng Lu注意Dubbo的贡献者,请注意RPC,服务治理和其他领域。

  达博认为,每个人都不陌生。这是一个微服务开发框架。它提供了RPC通信和微服务治理的两个关键功能。在日常开发中,每个人都使用Dubbo提供的更多RPC通信,并且控制其提供的服务治理的能力相对较少。本文的重点将放在服务治理中。Dubbo框架提供了非常丰富的服务治理功能,例如流量控制,动态配置,服务模拟,服务测试和其他功能。Dubbo-Admin的作用是为Dubbo框架提供的服务治理能力提供一个平台。本文将介绍Dubbo-Admin提供的功能,以便每个人都可以快速理解和使用Dubbo-Admin并具有初步的理解Dubbo提供的服务治理能力。

  服务详细信息将用作显示Dubbo服务提供的服务信息的维度,包括服务提供商提供的元数据信息,消费者信息和服务,例如提供的方法名称和参数列表。最新版本支持应用程序 - 级别DiscoveryDubbo 3.0提供的模型,并与注册源中的应用程序级别/接口级别区别开来。

  Dubbo-Admin提供了三个路由支持,即条件路由,标签路线和网格路由。提供的功能很容易实现服务治理的需求,例如黑白列表,群集隔离和金鸟释放。LET显示了该示例的这一部分的功能。

  条件路由

  有条件的路由可以编写一些自定义路由规则,以实现服务治理的需求,例如黑白列表,读取和写入分离等。路由规则在启动RPC调用之前扮演过滤目标服务器地址的角色。过滤地址列表将用作消费方最终启动RPC调用的替代地址。

  下图显示了简单黑名单函数的实现。路由规则的含义是禁止从172.22.3.91消费者呼叫服务HelloService.Matching条件的IP]。

  标签

  标签路线可以通过将一个或多个服务的提供商划分为同一组。约束流量仅在指定组中循环,以实现流量隔离的目的。它可以用作场景的能力,例如蓝色 - 格林版本和灰色发行版。在应用程序级别创建规则,相应的静态标签为dubbo.prvider.tag = tag1和@dubboservice(tag =“ tag2”)。

  网格路由

  网格路由是Dubbo 3.0启动的新路由规则。它非常强大。网格路由的使用可以涵盖两个上诉路线的功能方案,并且还可以结合更复杂的路由方案。

  网格路由将整个流量管理分为虚拟服务和目标。VirtualService与入口流量匹配,并且目标核与导出流量匹配。以下将实现案例。通过将HI方法路由通过输入数字来服务HelloService的HI方法,可以实现传入参数对V1服务标签的请求。

  公共接口helloservice {

  字符串hi(整数编号);

  }

  该服务实现了退货服务提供商端口。

  公共类HelloServiceImpl实施HelloService {

  @value(“ $ {dubbo.protocol.port}”)

  私人字符串端口;

  @Override

  公共字符串hi(整数编号){

  返回“ hi” +数字 +“,我的端口是:” +端口;

  }

  }

  步骤1:启动两个服务提供商的参数是端口= 20883,dubbo.application.parameters.test-version = v1和port = 20884,dubbo.application.parameters.test-version.test-version = v2,通过dubbo.application ..参数定义的参数将暴露于服务的URL。

  dubbo.application.parameters.test-version = v1

  dubbo.protocol.port = 20883

  步骤2:创建网格路由规则,定义两个部分:VirtualService和destinationRule.DestinationRule零件分别将服务URL参数test-version = v1和test-v2 = V2分别分为service v1和v2。HelloService#HI方法的输入,通往V1服务的偶数路由以及标签到V2的奇数路由。

  apiversion:service.dubbo.apache.org/v1alpha1

  善良:虚拟服务

  元数据:

  姓名:演示/OddevenRouter

  规格:

  Dubbo:

  -Routedetail:

  -匹配:

  -方法:

  ARGC:1

  args:

  -sndex:0

  num_value:

  一个:

  - 实面:0.0

  mod:2.0

  类型:int

  name_match:

  确切:嗨

  名称:偶数

  路线:

  -目的地:

  主持人:演示

  子集:v1

  -匹配:

  -方法:

  ARGC:1

  args:

  -sndex:0

  num_value:

  一个:

  - 外观:1.0

  mod:2.0

  类型:int

  name_match:

  确切:嗨

  名称:奇数

  路线:

  -目的地:

  主持人:demo2

  子集:v2

  服务:

  -exact:org.test.apache.dubo.interfaces.helloservice

  ---

  apiversion:service.dubbo.apache.org/v1alpha1

  KIND:目标列

  元数据:

  名称:测试路由

  规格:

  主持人:演示

  子集:

  - 名称:v1

  标签:

  测试:V1

  - 名称:v2

  标签:

  测试:V2

  步骤3:启动消费者进行测试。您可以看到回程结果是我们预期的简单灰度功能,当然,它也可以轻松实施A/B测试和释放金鸟。

  动态配置提供了动态调整RPC调用行为而无需重新启动的能力。例如,修改超时,重量,负载平衡策略调整,降级等。避免需要重新启动的情况以调整Dubbo参数,以及一些常见的参数调整将显示下面。

  配置:v2.7

  启用:true

  配置:

  -ddresses:[0.0.0.0]#0.0.0.0对于所有地址

  侧面:消耗#有效尺寸,消费者或地址

  参数:

  超时:6000#动态配置参数

  配置:v2.7

  范围:应用程序

  关键:演示者

  启用:true

  配置:

  -ddresses:[“ 10.20.153.10:20880”]]]

  方面:提供者

  参数:

  重量:200

  配置:v2.7

  范围:应用程序

  钥匙:表演消费者

  启用:true

  配置:

  - 侧:消费者

  参数:

  负载平衡:随机

  接口文档

  DOCS核心介绍Dubbo-Api-Docs-Nanotations以注释的形式引入界面和参数信息。

  org.apache.dubbodubo-api-docs-Annotations $ {dubbo-version} org.apache.dubbodubbo-api-docs core $ {dubbo-version}呈现如下。

  服务测试

  与Dubbo-Api-Docs相比,服务测试可以测试Dubbo服务,而无需引入任何依赖项,这很方便快速调整和验证Dubbo服务。渲染如下:

  服务模拟

  服务模拟通过非代码嵌入来拦截消费者对提供商的请求,并在消费者请求上动态发布或返回用户定义的模拟数据。结果,当提供商依赖于先前的开发过程时,消费者依赖消费者开发人员的阻塞问题。

  只需要以下两个步骤即可享受服务模拟功能带来的便利:

  步骤1:消费者应用程序引入服务模拟依赖项,添加JVM启动参数dubbo.admin.mock = true以打开服务模拟功能。

  org.apache.dubbo.extensionsdubbo-mock-adminlast步骤2:配置Dubbo Admin中的相应模拟数据。

  本文介绍了Dubbo-Admin的大多数功能,涵盖了开发,测试和在线阶段。我希望本文能够为使用并开始使用Dubbo-Admin。有关详细信息,您需要参考官方网站。我也希望Dubbo-Admin可以为Dubbo用户带来新的体验。快速,快速使用Dubbo提供的服务治理能力更容易。

  资料来源:阿里巴巴云