美文网首页
Dubbo测试环境服务调用隔离这么玩对么

Dubbo测试环境服务调用隔离这么玩对么

作者: 猿天地 | 来源:发表于2020-07-15 13:03 被阅读0次

背景阐述

前几天,有位同学问我一个关于 Dubbo 的问题。他的诉求是这样子的:

诉求一

第一个诉求是本地开发的时候想自己调用自己的服务,比如自己在改 A 服务,然后出问题了,本地再启动一个 B 服务,A 服务调用 B 服务直接排查问题。

目前的问题是用的同一个注册中心,所以会调用到其他的服务实例。

还有就是去网上找了一些文章的资料,按照资料上的配置没有效果,也就是在@Reference 配置 url 来指定调用的服务地址。

配置如下:

@Reference(url="dubbo://localhost:20880")

诉求二

目前他们的测试环境没有使用 Docker 来部署,而且每个服务只部署了一个实例。问题就是当一个项目并行开发时有多个分支,这些分支得合并后一起部署测试。经常会出现代码冲突等问题。

还有就是快要上线时,需要下掉其他的分支做回归测试。但是会出现其他团队也要同一天上线,就只能协商等待来解决。

最好的方式就是可以实现一个分支部署一个实例,对于他们目前的这个规模和投入这个暂时做不了。所以他向我请教,有没有什么更好更快的方式。

解决方案

既然找了我,我还是给出一些建议吧,不一定很好,仅供参考。

诉求一解决方案

@Reference

在@Reference 中指定 url 是可以的,只是那位同学配置的地址有问题,在地址后面应该加上接口和版本的信息。

@Reference(url="dubbo://localhost:20880/com.xxx.xxx:1.0")

本地配置文件

在@Reference 中指定 url 不好的方式就是跟代码耦合了,很容易出现将这种代码提交的情况。所以我们介绍另一种方式。

在自己电脑的用户目录下建一个 dubbo-resolve.properties 文件,路径是 ${user.home}/dubbo-resolve.properties ,然后文件里配置好需要直连的服务信息,不需要修改本地工程的其他配置信息。

dubbo-resolve.properties

com.xxx.xxx=dubbo://localhost:20880/com.xxx.xxx:1.0.0

com.xxx.xxx 是接口的全路径,等于号后面就是服务的地址了。

诉求二解决方案

既然短时间内不太可能去改造部署系统,那么可以先简单的处理。目前他们就两个团队共用一套测试环境,我认为可以再新增一套环境来进行团队间的隔离。

对于入口处的 Web 程序或者网关,可以弄两个域名解决。主要是内部服务的调用需要进行隔离,比如我 A 团队部署的服务不能让 B 团队调用到,因为分支不一样会出问题。

注册隔离

注册隔离指的是在服务注册的时候就将两个团队的测试服务分别注册,比如各自使用一个独立的注册中心。

独立的注册中心肯定可以解决问题,但是完全没必要这么麻烦。他们注册中心用的 Nacos,可以使用 Nacos 的 namespace 来隔离即可。

-Ddubbo.registry.address=nacos://api.nacos.beta.xxx.com:8848?namespace=xxx

本地配置文件

同样也可以用本地配置文件的方式来指定调用的服务,这个方式的前提是部署的机器是独立的,不能共用。如果新增了新的接口需要修改配置文件。

控制 Dubbo 路由或者负载均衡

控制路由或者负载均衡都是为了实现同样的效果,也就是把所有的服务提供者信息给你,你自己选择一个去调用。

官方文档:

http://dubbo.apache.org/zh-cn/docs/dev/impls/router.html

http://dubbo.apache.org/zh-cn/docs/dev/impls/load-balance.html

总结

对于诉求一的解决方案,建议使用本地配置文件的方式。不需要改动代码,比较方便。

对于诉求二的解决方案,建议使用注册隔离的方式。这是最彻底的方式,用了注册隔离,也就不用在想办法去控制路由了,因为注册上来的服务就是我这套环境需要的,不需要的要注册信息在另一个命名空间里面,相互不影响。

关于作者:尹吉欢,简单的技术爱好者,《Spring Cloud 微服务-全栈技术与案例解析》, 《Spring Cloud 微服务 入门 实战与进阶》作者, 公众号 猿天地 发起人。

相关文章

  • Dubbo测试环境服务调用隔离这么玩对么

    背景阐述 前几天,有位同学问我一个关于 Dubbo 的问题。他的诉求是这样子的: 诉求一 第一个诉求是本地开发的时...

  • dubbo spring cloud 之 consumer

    描述 dubbo服务调用方 maven依赖 配置 服务调用 应用启动类 测试 请求:http://127.0.0....

  • dubbo异常超时分析

    环境:java8 dubbo2.8.4 现象:a服务调用b服务,设置调用超时10s,偶尔会出现调用超时,但...

  • Duplicate spring bean id 问题调查

    问题背景:从本地调用服务器的dubbo接口进行测试 实现思路:基于IDEA+Spring+maven+Dubbo搭...

  • Java进阶-Dubbo-进阶

    一、服务调用过程 1.1 服务调用方式   Dubbo 服务调用过程:   Dubbo 支持同步和异步两种调用方式...

  • 【转】实现DUBBO服务环境隔离

    实现DUBBO服务环境隔离 欢迎加入DUBBO交流群:259566260 要说这个话题之前先讲讲之所以要做这个的需...

  • 我对Dubbo的理解及学习

    Dubbo解析 对Dubbo的总体理:服务发布+远程调用+容错机制 一、服务发布 1、服务发布 1、解析XML成为...

  • jmeter远程分布式调用配置记录

    最近在给产品线做基于dubbo协议的java服务测试,我本机没有配置dubbo服务容器,先让同事提供测试类,我再对...

  • Dubbo后台管理和监控中心部署

    通过dubbo监控中心和后台管理可以很好的监控dubbo服务,监控服务端服务和客户端调用情况,调用次数,调用日志,...

  • dubbo源码分析-服务调用

    dubbo服务调用,就是服务消费者发起调用服务提供者接口的过程。是对前面服务导出,服务引用,服务集群、路由和负载均...

网友评论

      本文标题:Dubbo测试环境服务调用隔离这么玩对么

      本文链接:https://www.haomeiwen.com/subject/osmdhktx.html