一、接口服务多版本管理

在实际项目场景中在发布生产之前会存在一个过渡的灰度版本环境,dubbo也一样在接口服务升级时,可以实现两个版本的服务接口,指定不同的版本号。当少量的消费端调用引用高版本后使用无问题时,则可以将消费端调用全部切换到新版本的服务上。

1,服务提供方相同接口不同版本配置注解方式实现和使用xml方式实现

使用注解方式主要在服务提供者项目接口实现类注解@Service上添加 version 信息对类中所有方法进行版本设置。在xml中在其<dubbo:service >标签上进行配置版本信息。

xml配置方式

2,服务消费方使用配置版本信息进行路由不同接口

服务消费端可以在接口引用上进行配置版本信息。使用注解时在接口实现类中接口属性引用处@Reference注解上添加配置版本信息。在使用xml方式时,在<dubbo:reference > 标签上添加version信息。当消费端想随机的调用不同的接口时,可以配置version信息为version="*"。

xml方式配置

二、dubbo本地存根使用介绍

本地存根Stub为服务消费端中实现了远程依赖接口的并有一个有远程接口类构造参数的实现类(在提供端也可以实现,不过命名位置等都有要求,消费端较容易实现)。在消费端调用执行远程接口方法前回先执行本地存根类的对应方法。我们在该存根类中可以先进行参数校验等操作在执行真实的远程方法,在执行远程方法之后我们还可以对返回数据做逻辑处理。或者远程方法报错时我们可以通过try{}chache(){}返回一个一些模拟数据等自定义操作。存根的使用方式类似于一种远程接口方法的切面编程。

实现步骤

1,添加本地存根类对象

package com.xiaohui.service.impl;import com.xiaohui.domain.UserAddress;
import com.xiaohui.service.UserService;import java.util.Arrays;
import java.util.List;/*** 代理对象*/
public class UserServiceStub implements UserService {private UserService userService;/**** @param userService*/public UserServiceStub(UserService userService) {this.userService = userService;}@Overridepublic List<UserAddress> queryAllUserAddress(String userId) {try {System.out.println("========调用前执行,可检查参数等========");List<UserAddress> userAddresses = userService.queryAllUserAddress(userId);System.out.println("========调用后执行========");return userAddresses;} catch (Exception e) {e.printStackTrace();//可以模拟一些失败返回参数return Arrays.asList(new UserAddress(10001, "default address", "10001"));}}
}

2,使用注解或者xml方式在接口依赖处进行配置存根类

注解方式:在@Reference处进行配置

xml方式:

Dubbo(十二)dubbo的服务版本配置以及本地存根使用介绍相关推荐

  1. Web基础配置篇(十二): Elasticsearch的安装配置及入门使用

    Web基础配置篇(十二): Elasticsearch的安装配置及入门使用 一.概述 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RE ...

  2. 十二、阿里云 maven 配置

    十二.阿里云 maven 配置 在 maven 目录下的 conf/setting.xml 中找到 mirrors 添加如下内容,对所有使用改 maven 打包的项目生效 <mirror> ...

  3. Linux(b站视频兄弟连)自学笔记第十二章——Linux服务管理

    Linux(b站视频兄弟连)自学笔记第十二章--Linux服务管理 服务分类 RPM包安装服务的管理 独立服务的管理 基于xinetd 的服务管理 源码包服务管理 服务分类 RPM包安装服务的管理 独 ...

  4. linux中ftp的工作原理,Linux系统学习 十二、VSFTP服务—简介与原理

    1.简介与原理 互联网诞生之初就存在三大服务:WWW.FTP.邮件 FTP主要针对企业级,可以设置权限,对不同等级的资料针对不同权限人员显示. 但是像网盘这样的基本没有权限划分. 简介: FTP(Fi ...

  5. Dubbo(十四) dubbo的服务降级与集群容错

    一.dubbo的服务降级 dubbo的服务降级包含两种常见,屏蔽服务和服务容错.在dubbo-admin服务信息消费者界面可以看到有屏蔽和容错功能. 屏蔽功能是将该服务直接进行屏蔽,消费者将不再调用服 ...

  6. K8S 快速入门(十二)实战篇:配置 ConfigMapSecret

    一.ConfigMap 官方文档 ConfigMap 1. 动机 我们经常都需要为我们的应用程序配置一些特殊的数据,比如密钥.Token .数据库连接地址或者其他私密的信息.你的应用可能会使用一些特定 ...

  7. 实训十二:路由器静态路由配置

    一. 实验目的 理解路由表 掌握静态路由的配置 二. 应用环境 在小规模环境里,静态路由是最佳的选择 静态路由开销小,但不灵活,适用于相对稳定的网络 三. 实验设备 1.DCR-2655 三台 2.网 ...

  8. docker(二十二):docker加速器配置

    一.实现功能 docker直接从dockerhub拉取镜像速度太慢,在此配置国内镜像,从而大大提升镜像拉取速度. 二.实现步骤 1.注册daocloud   2.登录加速器网址 https://www ...

  9. Packet Tracer 思科模拟器入门教程 之十二 路由器RIP动态路由配置

    实验目的 掌握RIP协议的配置方法: 掌握查看通过动态路由协议RIP学习产生的路由: 熟悉广域网线缆的链接方式: 实验背景 假设校园网通过一台三层交换机连到校园网出口路由器上,路由器再和校园外的另一台 ...

最新文章

  1. 以系统最高权限运行软件
  2. csv 字符串_爬虫|python读写csv文件的方法完成生涯规划表
  3. Leetcode No.122
  4. 软件开发中IT用语-日文和英文对照版
  5. 给AI换个“大动力小心脏”之OCR异构加速
  6. java关键字与标识符 —(3)
  7. d3.js 教程 模仿echarts折线图
  8. MySQL left()函数
  9. android最新知识点总结,学习android之 知识点总结
  10. GLTF格式——关系描述
  11. sqlserver 参数化查询 允许为null_关于SQL Server的insert执行的秘密(上)一个最简单的insert分析...
  12. relu 里面的是激活函数
  13. zabbix监控的配置
  14. python 车牌识别简单_简单30行Python代码让你玩转YOLO目标识别检测!
  15. IP地址被屏蔽怎么解决
  16. vscode连接夜神模拟器
  17. Java简单循环依赖的解决 —— spring_imitate(Spring的模仿)
  18. 机关干部的21条人际关系准则
  19. VMware14下载安装ubuntu14.04.6(VMware系列二)
  20. 岛屿类问题DFS遍历框架

热门文章

  1. TQuery组件的Open方法与ExecSQL的区别
  2. SpringBoot开发Restful接口
  3. Hadoop集群安装(真分布式)
  4. Mybatis调用oracle 存储过程
  5. Docker的一些理解(二)
  6. 启动修复可以尝试将您的计算机还原到,如何修复Windows Bootloader问题(如果您的计算机不启动) | MOS86...
  7. oracle 转 mysql 乱码问题吗_Oracle数据传输MySQL中文编码问题
  8. jmeter安装包双击没反应_Jmeter5.0源码在eclipse运行的正确打开方式
  9. MySQL之在储存过程中使用表名为变量
  10. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法