关于作者
中间件开发爱好者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提供的服务治理能力更容易。
资料来源:阿里巴巴云