在看 injvm 协议的时候,我们还是从 InjvmProtocol 类开始看.
这是它最重要的两个方法,按照我们前面分析的内容,export 方法是启动服务,但是这个是本地服务,所以不需要启动服务.
public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {
return new InjvmExporter<T>(invoker, invoker.getUrl().getServiceKey(), exporterMap);
}
@Override
public <T> Invoker<T> protocolBindingRefer(Class<T> serviceType, URL url) throws RpcException {
return new InjvmInvoker<T>(serviceType, url, url.getServiceKey(), exporterMap);
}
其实仔细的对比下其他协议的实现,发现讨论都是一个套路.
一般来说,都会在 Invoker 类的 doInvoker 方法中发起一次调用,要么是通过网络,要么是直接调用.
public Result doInvoke(Invocation invocation) throws Throwable {
Exporter<?> exporter = InjvmProtocol.getExporter(exporterMap, getUrl());
if (exporter == null) {
throw new RpcException("Service [" + key + "] not found.");
}
RpcContext.getContext().setRemoteAddress(LOCALHOST_VALUE, 0);
return exporter.getInvoker().invoke(invocation);
}
然后就没有啥了,直接调用实现类的方法了.
分享到:
相关推荐
在Dubbo中,Hessian协议被用于服务间通信,它提供了快速且轻量级的RPC方式。要实现Hessian协议的HTTP请求,我们需要以下步骤: 1. **创建服务提供者(Provider)**: - 首先,你需要定义一个服务接口,比如`...
在Java高级面试中,Dubbo、JVM和Kafka是三个关键的技术领域,它们分别代表了服务治理、虚拟机性能优化以及分布式消息处理。以下是对这些主题的详细讲解。 首先,JVM(Java Virtual Machine)是Java程序运行的基础,...
默认就是⾛ dubbo 协议,单⼀⻓连接,进⾏的是 NIO 异步通信,基于 hessian 作为序列化协议。使⽤的场景是:传输数据量⼩ (每次请求在 100kb 以内),但是并发量很⾼。 为了要⽀持⾼并发场景,⼀般是服务提供者就⼏...
【Dubbo入门例子程序】是针对初学者设计的一个简单示例,旨在帮助理解并快速上手Apache Dubbo这一高性能、轻量级的Java远程服务框架。这个例子通过一个"Hello, World!"的应用来演示Dubbo的基本用法,采用Maven作为...
标题中的“nodejs使用原生的dubbo协议打通了dubbo的rpc方法调用”意味着在Node.js环境中,开发者成功地实现了对Dubbo服务的RPC(远程过程调用)访问,利用了Dubbo协议的特性。Dubbo是阿里巴巴开源的一个高性能、轻量...
2. **Remoting层解析**:Dubbo的Remoting层是其通信基础,涉及到网络通信、序列化和协议处理等关键技术。书中详细解析了Netty、HTTP、TCP等通信机制,以及Hessian和Protobuf等序列化方式,让读者能够理解服务间的...
深入分析Dubbo的源码可以帮助开发者更好地理解和利用这一强大的工具,以实现更高效的企业级应用。 首先,我们要理解Dubbo的核心组件和设计模式。Dubbo采用了Service、Provider、Consumer、Registry、Monitor五种...
由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要关心协议的细节,只需要在配置中指定使用的协议即可,从而保证了服务提供方与服务消费方之间的透明。 另外,如果...
《Dubbo源码分析系列》是一份深入探讨Java开源框架Dubbo核心原理和技术细节的资料。Dubbo,作为阿里巴巴的一款高性能、轻量级的服务治理框架,它为分布式系统提供了服务发现、调用、负载均衡、容错等关键功能。这份...
此外,还可以通过Dubbo-admin进行故障排查,查看调用链路,分析性能瓶颈。 3. **Dubbo-demo**: 示例项目通常会展示Dubbo的基本用法,例如如何创建服务提供者和服务消费者,如何配置服务接口和实现,如何进行服务...
在`dubbo.properties`配置文件中,可以设置服务使用的通信协议,例如默认的dubbo协议。不同的协议会影响服务调用的性能和特性。 5. **负载均衡(Load Balance)** Dubbo内置了几种负载均衡策略,如随机、轮询、...
在Dubbo中,序列化协议是实现RPC通信的关键部分,因为它涉及到数据的转换和网络传输。 1. **Dubbo支持的通信协议**: - **Dubbo协议**:默认协议,采用单个长连接和NIO异步通信,基于Hessian进行序列化。适用于大...
Dubbo支持多种通信协议,如:TCP的Dubbo协议、HTTP的RESTful协议、基于内存的InJVM协议等。Dubbo协议是默认的高性能二进制协议,它实现了高效的序列化和反序列化,降低了网络传输开销。 五、服务接口与实现 服务...
3. **协议支持**:Dubbo支持多种通信协议,如基于HTTP的RESTful协议、基于TCP的Dubbo协议、基于RMI的Hessian和 Burlap协议等,可以根据实际需求选择。 4. **负载均衡**:Dubbo内置了多种负载均衡策略,如随机、轮询...
Dubbo 3.0 是 Dubbo 框架的最新版本,相比之前的版本,Dubbo 3.0 提供了许多新的特性和改进,例如增强的服务治理能力、改进的性能、支持更多的协议等。Dubbo 3.0 也提供了更好的可扩展性和灵活性,使得开发者可以更...
除了默认的Dubbo协议实现,还支持Hessian、HTTP、REST、RMI、Thrift和WebService等多种协议,以及Injvm本地调用,适应性强。 - **dubbo-registry-api**:注册中心负责协调Consumer和Provider,定义了注册中心接口和...
5. **服务监控**:Dubbo内置了监控中心,可以统计服务的调用次数、调用时间、异常比例等指标,方便进行服务性能分析。 三、Dubbo实战应用 1. **服务配置**:通过XML配置文件或API方式,可以轻松地定义服务提供者和...
14_dubbo的常用协议 15_dubbo常用协议的配置 16_dubbo启动时检查 17_dubbo负载均衡策略 18_dubbo多协议与多版本 19_dubbo服务分组 20_dubbo的token验证 21_dubbo的配置覆盖策略 22_dubbo的常用标签 23_...
2. **Dubbo配置**:项目会包含Dubbo的配置文件,如dubbo.properties或XML配置,用来定义服务提供者和服务消费者,包括接口、实现类、版本、协议、端口等信息。 3. **服务提供者(Provider)**:这部分代码会实现...
dubbo采用了微内核的架构模式,核心功能只包含远程服务调用,其主要的扩展点包括协议、注册中心、集群、负载均衡、序列化等。通过插件机制,用户可以根据需要对这些扩展点进行定制和扩展。 4. Hello World例子是...