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">
</bean></dubbo:service></dubbo:protocol></dubbo:application>
5)把提供者安装到maven仓库中
maven install
2.2 第一个消费者
创建maven项目
1) pom.xml
加入dubbo依赖
org.apache.dubbo
dubbo
2.7.8
com.bjpowernode
01-orderservce-provider
1.0.0
2)声明要使用的dubbo服务提供者。 说明要使用的接口
在spring的配置文件者, 声明要使用的接口
2.3 Dubbo常用标签
1) 公用标签:在提供者和消费者中都使用的。
2)提供者标签
3)消费者标签
2.4 Dubbo注解
@EnableDubbo , @EnableDubboConfig , @DubboComponentScan,
@DubboService,@DubboReference
@DubboService
@DubboService == 暴露服务的
属性:interface:接口的.class
位置:放在接口的实现类的上面
@DubboReference
@DubboReference == 引用远程服务
位置:可以放在属性(成员变量)定义上面,可以方法上面
Dubbo组件扫描器:扫描的是Dubbo的注解(@DubboService,@DubboReference)
第三章 注册中心
3.1 注册中心作用
1) 服务管理, 发现服务,注册服务
2) 实现故障处理
3)实现消费者和提供者的解耦合。
3.2 注册中心
Nacos 注册中心
Zookeeper 注册中心(推荐)
3.3 Zookeeper
地址:https://zookeeper.apache.org , 下载zookeeper安装文件
需求: 使用zookeeper ,先有java环境。
安装zookeeper
- 解压缩 apache-zookeeper-3.5.5-bin.tar.gz
- 修改zookeeper配置文件. zookeeper安装目录/conf/zoo_sample.cfg 拷贝zoo_sample.cfg ,改名为 zoo.cfg
- 修改zoo.cfg文件的内容
dataDir=目录,自定义目录,保存zookeeper收到的数据。 目录不要有空格,中文
admin.serverPort=自定义的端口号, 默认是8080, 改为 8888
- clientPort=2181 : dubbo程序访问zookeeper的默认端口号 ,可以修改。
运行zookeeper
进入到zookeeper安装目录/bin.
zkServer.cmd: 服务端程序
zkCli.cmd 客户端程序
3.4 dubbo项目者使用Zookeeper
1 ) 在提供者和消费者中都需要使用 zookeeper client 。 使用client 是zookeeper数据交换
org.apache.curator
curator-framework
4.0.1
org.apache.curator
curator-recipes
4.0.1
- 提供和消费者的配置文件者,提供zookeeper的地址信息
访问zookeeper:
1)可以zkCli.cmd 客户端程序, 使用 ls 目录
2) 使用图形界面工具。 ZooInspector.zip
java -jar zookeeper-dev-ZooInspector.jar
3.5 使用Nacos
下载地址: https://github.com/alibaba/nacos/releases
3.6 使用Nacos的提供者。
1)nacos依赖
org.apache.dubbo
dubbo-registry-nacos
2.7.8
com.alibaba.nacos
nacos-client
1.3.1
com.alibaba.spring
spring-context-support
1.0.8
io.netty
netty-all
4.1.54.Final
org.apache.dubbo
dubbo
2.7.8
2)在配置文件中,声明nacos注册中心
第四章 匹配服务
默认使用接口名称作为服务匹配,找到服务提供者。
dubbo使用接口, version, group 三个值唯一匹配服务。 当没有version或者group使用接口名称作为唯一匹配条件
version:表示版本
group:分组
使用version,group区分接口的不同实现。
4.1 version
version:版本。 可以用来区分同一个接口的不同实现。 消费者和提供者必须使用相同的版本,否则调用失败。
提供者
dubbo使用: xxxx.SomeService:1.0 表示这个唯一的服务提供者
消费者:
dubbo调用: xxxx.SomeService:1.0 调用对于的提供者
4.2 group
使用group区分服务的不同实现,接口的不同使用。 消费者和提供者要匹配group名称。
提供者:
消费者:使用指定组
使用任意组
4.3 Dubbo中的Filter
使用自定义Filter步骤:
- 创建类实现org.apache.dubbo.rpc.Filter接口, 实现invoke()
- 配置自定义Filter。 1)在 resources 下创建 META-INF/dubbo 目录 2)创建文本文件,名称org.apache.dubbo.rpc.Filter 3)在文件中,说明自定义的Filter类信息 自定义过滤器对象名称=自定义过滤器类的全限定名称
- 指定提供者使用某个Filter对象
- 消费者调用提供者, 先执行filter
第五章: 管理控制台(Dubbo Admin)
5.1 简介
管理控制台:就是一个web应用, 是dubbo服务的管理程序。 配置提供者,消费者的一些参数, 提供访问控制的处理。
管理控制台:是dubbo项目组写好的程序。 我们需要编译安装这个程序就可以。 前端使用的vue框架,后端是SpringBoot。
5.2 下载管理控制台源代码
下载源代码
https://github.com/apache/dubbo-admin
使用步骤:
- 下载代码:
git clone https://github.com/apache/dubbo-admin.git
- 在
dubbo-admin-server/src/main/resources/application.properties
中指定注册中心地址 - 构建
mvn clean package
- 启动
cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar
管理控制台(Dubbo Admin)
5.1 简介
管理控制台:就是一个web应用, 是dubbo服务的管理程序。 配置提供者,消费者的一些参数, 提供访问控制的处理。
管理控制台:是dubbo项目组写好的程序。 我们需要编译安装这个程序就可以。 前端使用的vue框架,后端是SpringBoot。
5.2 下载管理控制台源代码
下载源代码
https://github.com/apache/dubbo-admin
使用步骤:
- 下载代码:
git clone https://github.com/apache/dubbo-admin.git
- 在
dubbo-admin-server/src/main/resources/application.properties
中指定注册中心地址 - 构建
mvn clean package
- 启动
cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar
- 访问 http://localhost:8080`
Original: https://www.cnblogs.com/daoshangmazai/p/15878902.html
Author: 岛上码仔
Title: Dubbo入门到精通学习笔记(动力节点王鹤)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713534/
转载文章受原作者版权保护。转载请注明原作者出处!