一、什么是 Dubbo
Apache Dubbo 是一款微服务开发框架,它为我们实行了 RPC 通信和微服务治理。同时 Dubbo 是高度可扩展的,可以基于 dubbo 提供的服务治理能力扩展实现服务发现、负载均衡、流量调度等服务治理诉求。
二、Dubbo 解决了什么痛点
Dubbo 提供了从服务定义、服务发现、服务通信到流量管控等几乎所有的服务治理能力,并且尝试从使用上对用户屏蔽底层细节,以提供更好的易用性。当传统的单一服务垂直应用架构满足不了我们日益增长的需求时,dubbo 就产生了。
Dubbo 提供了三大核心能力:
单一应用架构
垂直应用架构
分布式服务架构
流动计算架构
三、Http 与 RPC 对比
四、怎么使用 Dubbo 进行 RPC 通信
本次我们介绍 dubbo 的面向接口的远程过程方法调用. Dubbo 采用全 Spring 配置的方式,透明化接入应用,因此我们只需要在 Spring 项目加载 Dubbo 的配置即可。本次示例的注册中心采用的是 nacos ,读者也可以切换成 zk 等注册中心。
1.导入 dubbo 所依赖的包
implementation 'org.apache.dubbo:dubbo-registry-nacos:2.7.5'
implementation 'org.apache.dubbo:dubbo-spring-boot-starter:2.7.5'
复制代码
2.在配置文件配置 dubbo
dubbo.application.name=provider
dubbo.registry.address=nacos://127.0.0.1:8848?namespace=xxxxx
dubbo.provider.check=false #默认不检查 dubbo服务是否注册成功
复制代码
3.在程序启动入口 Application 依赖注入
import iorg.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
@EnableDubbo
public class Application{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
复制代码
4.创建一个项目共享的接口
public interface CommonService {
String helloWord(String var1);
}
复制代码
5.服务提供者实现该接口
import org.apache.dubbo.config.annotation.Service;
/**
* 注入 dubbo,为服务提供者的实现方法
* timeout 设置为 60s
* @author gyf
*/
@Service(timeout = 60 * 1000)
public class CommonServiceImpl implements CommonService{
@Override
public String helloWord(String name){
return "Hello Word "+ name;
}
}
复制代码
6.在消费者调用该接口
消费者的配置与服务提供者大致相似,修改配置即可
dubbo.application.name=consumer
dubbo.registry.address=nacos://127.0.0.1:8848?namespace=xxxxx
dubbo.reference.check=false
dubbo.consumer.check=false
复制代码
import com.alibaba.dubbo.config.annotation.Reference;
public class CommonServiceProvide{
@Reference
private CommonService commonService;
private void getHelloWord(){
commonService.helloWord("dubbo");
}
}
复制代码
评论