在 Java 里,Dubbo 本身就是一个 RPC(远程过程调用)框架,它的核心作用就是:
像调用本地方法一样调用远程服务。
下面我从 整体原理 → 最小可运行示例 → 关键配置点 三个层面讲清楚。
Dubbo 远程调用大致流程:
Consumer(消费者)
↓ 调用接口方法(像本地一样)
Dubbo Proxy
↓ 序列化 + 网络传输
Provider(提供者)
↓ 反序列化 + 执行业务逻辑
返回结果
核心角色:
dubbo 协议以 Spring Boot + Dubbo + Zookeeper 为例(最常见)
public interface UserService {
String sayHello(String name);
}
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-zookeeper</artifactId>
</dependency>
@DubboService
public class UserServiceImpl implements UserService {
@Override
public String sayHello(String name) {
return "Hello " + name;
}
}
dubbo:
application:
name: user-provider
registry:
address: zookeeper://127.0.0.1:2181
protocol:
name: dubbo
port: 20880
@SpringBootApplication
@EnableDubbo
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
@RestController
public class UserController {
@DubboReference
private UserService userService;
@GetMapping("/hello")
public String hello() {
return userService.sayHello("Dubbo");
}
}
dubbo:
application:
name: user-consumer
registry:
address: zookeeper://127.0.0.1:2181
@DubboReference(url = "dubbo://127.0.0.1:20880")
private UserService userService;
适合调试、测试,不推荐生产
Dubbo 实现远程调用 = 接口共享 + 服务提供者暴露 + 注册中心 + 消费者引用 + 动态代理
如果你愿意,我可以:
你想继续哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。