Dubbo泛化

简介: Dubbo泛化是一种基于Dubbo协议进行远程服务调用的方式,它可以实现不需要依赖服务接口实现类的服务调用。通俗地讲,泛化调用就是像调用本地方法一样,通过方法名和参数来调用远程服务,不需要编写服务接口和实现类。

Dubbo泛化是一种基于Dubbo协议进行远程服务调用的方式,它可以实现不需要依赖服务接口实现类的服务调用。通俗地讲,泛化调用就是像调用本地方法一样,通过方法名和参数来调用远程服务,不需要编写服务接口和实现类。

泛化调用的实现原理是基于Dubbo的Protocol层和Filter层,其中Protocol层提供了服务的导出和引用,Filter层提供了服务的过滤和拦截。Dubbo泛化调用在服务导出时会生成一个代理类,代理类的方法名和参数与服务接口相同,但方法返回值是Object类型,通过代理类来调用远程服务。
Dubbo泛化调用的接入代码示例如下:
引入Dubbo依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>x.y.z</version>
</dependency>

配置服务提供者

<dubbo:protocol name="dubbo" port="20880"/>
<dubbo:service interface="com.example.DemoService" ref="demoService"/>

配置服务消费者

<dubbo:reference id="demoService" interface="com.example.DemoService" url="dubbo://localhost:20880"/>

调用服务

import com.alibaba.dubbo.rpc.service.GenericService;
import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        // 创建GenericService代理类
        GenericService genericService = (GenericService) applicationContext.getBean("demoService");
        // 调用远程服务
        String methodName = "sayHello";
        String[] parameterTypes = new String[]{"java.lang.String"};
        Object[] arguments = new Object[]{"World"};
        Object result = genericService.$invoke(methodName, parameterTypes, arguments);
        System.out.println(JSON.toJSONString(result));
    }
}

在调用远程服务时,需要指定方法名、参数类型和参数值,通过GenericService的$invoke方法来调用远程服务。注意,泛化调用的返回值类型是Object类型,需要根据具体场景进行类型转换。

目录
相关文章
|
17天前
|
设计模式 JSON Dubbo
超越接口:探索Dubbo的泛化调用机制
超越接口:探索Dubbo的泛化调用机制
36 0
|
17天前
|
Dubbo Java 应用服务中间件
微服务框架(四)Dubbo泛化调用实现
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为服务治理框架Dubbo泛化调用的实现
|
Dubbo 应用服务中间件 测试技术
带你读《Apache Dubbo微服务开发从入门到精通》——八、 泛化调用(1)
带你读《Apache Dubbo微服务开发从入门到精通》——八、 泛化调用(1)
80 1
|
XML Dubbo Java
带你读《Apache Dubbo微服务开发从入门到精通》——八、 泛化调用(2)
带你读《Apache Dubbo微服务开发从入门到精通》——八、 泛化调用(2)
107 1
|
JSON Dubbo Java
带你读《Apache Dubbo微服务开发从入门到精通》——八、 泛化调用(3)
带你读《Apache Dubbo微服务开发从入门到精通》——八、 泛化调用(3)
94 0
|
Dubbo 应用服务中间件 Apache
带你读《Apache Dubbo微服务开发从入门到精通》——八、 泛化调用(4)
带你读《Apache Dubbo微服务开发从入门到精通》——八、 泛化调用(4)
64 0
|
Dubbo Java 应用服务中间件
源码分析Dubbo 泛化调用与泛化实现原理
源码分析Dubbo 泛化调用与泛化实现原理
源码分析Dubbo 泛化调用与泛化实现原理
|
缓存 Dubbo 应用服务中间件
生产故障|Dubbo泛化调用引发的“血案”
生产故障|Dubbo泛化调用引发的“血案”
生产故障|Dubbo泛化调用引发的“血案”
|
开发框架 Dubbo 数据管理
盘古开发框架集成 ShenYu 网关实现 Dubbo 泛化调用
ShenYu 网关基于 Webflex 非阻塞模型通过泛化调用后端 Dubbo 服务。依赖 Netty 不需要 Servlet 容器,不需要引入服务接口包即可通过 Dubbo 泛化调用服务接口的方式就可以将后端 Dubbo 服务转换为 HTTP API。同时网关支持鉴权、动态限流、熔断、防火墙、灰度发布等。
857 1
盘古开发框架集成 ShenYu 网关实现 Dubbo 泛化调用
|
Dubbo 应用服务中间件
Dubbo 泛化引用和泛化实现
开篇  在Dubbo官方文档中关于泛化调用和泛化实现的说明,这里针对文档的案例做一些简单的说明和解释。 例子 // 引用远程服务 // 该实例很重量,里面封装了所有与注册中心及服务提供方连接,请缓存 ReferenceConfig<GenericService> reference = new ReferenceConfig<GenericService>(); reference.
3554 0