一、什么是 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=providerdubbo.registry.address=nacos://127.0.0.1:8848?namespace=xxxxxdubbo.provider.check=false #默认不检查 dubbo服务是否注册成功
复制代码
3.在程序启动入口 Application 依赖注入
import iorg.apache.dubbo.config.spring.context.annotation.EnableDubbo;import org.springframework.boot.SpringApplication;@EnableDubbopublic 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=consumerdubbo.registry.address=nacos://127.0.0.1:8848?namespace=xxxxxdubbo.reference.check=falsedubbo.consumer.check=false
复制代码
import com.alibaba.dubbo.config.annotation.Reference;
public class CommonServiceProvide{ @Reference private CommonService commonService; private void getHelloWord(){ commonService.helloWord("dubbo"); }}
复制代码
评论