探究 Dubbo 服务注册发现的原理(二)
前言在上一篇我提到了 Dubbo 不仅仅只有 Netty 的实现,还支持 RMI 协议、HTTP 协议等等,而且也按照它的原理简单的写了些代码,大致的梳理了一个整体的链路。而这一篇,我打算在上一篇的基础上,把整体的代码运用到正式项目中,看看该怎样实现。 整体的项目结构如下: 服务层链路就是简单的调用消费端接口,然后消费端再去服务端发送远端请求 然后接口层还是按照 Dubbo 的服务最佳实践提到的,分离维护 消费者代码先来看下消费者的代码(pom 就是一个 web 和我手写的 rpc): 1234567891011@RestControllerpublic class ConsumerController { @Autowired ApplicationContext applicationContext; @GetMapping("/{name}") public String test(@PathVariable String name){ PayService paySe...
探究 Dubbo 服务注册发现的原理
Spring Boot 整合 Dubbo 的常规用法下面是三个服务的调用链路: 项目结构: 服务提供者(例如 pay-service)需要提供接口服务(@Service): 服务消费者(例如 user-service)需要指定服务接口(@Reference),接口多实现可能需要配合 version 属性: 这样就完成了基本的上游对下游服务的调用。 探究底层实现Dubbo 不仅仅只有 Netty 的实现,还支持 RMI 协议、HTTP 协议等等。所以它实现这种 RPC 调用的特点较其他(如 feign-http)更适用高并发以及短链接的项目。接下来用 Netty 的代码简单复现下基本的 Dubbo 应用。 配合 Dubbo 的服务注册发现链路图: 简单捋顺下思路,看看我们需要哪几样东西: 一个共享容器,用来存储服务地址(IP、端口等),当服务存在多个时,还需要负载均衡,以及服务信息修改后的通知功能 为了确定唯一的服务接口信息,需要包含接口名(像 Dubbo 一样,多实现可能需要再加一个 version)、方法名、方法参数类型列表、方法值列表 Netty,保证服...
