Dubbo学习笔记
- 这篇笔记的学习视频来自b站动力节点
https://space.bilibili.com/76542346/video
- 笔记中的源码下载地址
第一章 初识 Dubbo
1.1 架构
单体结构
垂直结构
分布式结构
流动计算结构
1.2 进程间通信
进程:一个进程就是一个应用。
进程间通信: 两个或更多的应用之间的调用。
实现进程间通信: 1) Servlet或Controller(1需要提供每个接口的url地址,2提供参数说明,3.参数不清楚类型(String)。4. http协议)
2) RPC (Remote Procedure Call) : 远程过程调用。实现分布式中的服务之间调用。
RPC是远程通信的一种技术, 不是规范。 也可以叫做RPC协议。通过PRC简化进程间通信。
3)RPC调用
client(消费者:要使用提供者功能(方法提供))
server(提供者,提供方法的执行实现)
client—stub助手(序列化/反序列化)—网络----stub助手(反序列化/序列化)—提供者方法的实现
4)PRC能做什么
PRC主要就是做分布式开发,实现远程调用, 调用远程的方法,就像调用自己的方法一样
1.3 Dubbo简介
Dubbo: 是一个RPC框架,实现远程调用。
三个主要功能:
- 面向接口的远程调用;
- 智能容错和负载均衡。
- 服务注册和发现
第二章 Dubbo框架实现RPC
2.1 第一个服务提供者
使用直连方式,访问提供者。
- 依赖:pom.xml
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.8</version>
</dependency>
2 ) 创建一个数据类,表示订单的信息
Order: 有id, goodsName ,price , amount
3) 创建服务提供者接口 OrderService
Order createOrder(Integer userId, String goodsName, Float price, Integer amount)
4)暴露服务,使用dubbo框架的功能。
把服务暴露出去,消费者才能调用。 暴露的就是接口。
需要在spring的配置文件中声明暴露服务
<!--声明dubbo的服务名称,必须的
name:服务名称,推荐使用项目名称,这个name的值最后是唯一的。
-->
<dubbo:application name="01-orderservce-provider" />
<!--声明使用的协议和端口:可选-->
<dubbo:protocol name="dubbo" port="20880" />
<!--声明暴露的服务
interface:要暴露的接口的全限定名称
ref:此接口的实现类对象的id
registry:是否使用注册中心, 直连项目不使用注册中心, 赋值N/A
-->
<dubbo:service interface="com.bjpowernode.service.OrderService"
ref="orderServiceBean"
registry="N/A" />
<!--声明Bean-->
<bean id="orderServiceBean" class="com.bjpowernode.service.impl.OrderServiceImpl" />
5)把提供者安装到maven仓库中
maven install
2.2 第一个消费者
创建maven项目
1) pom.xml
加入dubbo依赖
<!--加入dubbo的依赖-->