Dubbo入门到精通学习笔记(动力节点王鹤)

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框架,实现远程调用。

三个主要功能:

  1. 面向接口的远程调用;
  2. 智能容错和负载均衡。
  3. 服务注册和发现

第二章 Dubbo框架实现RPC

2.1 第一个服务提供者

使用直连方式,访问提供者。

  1. 依赖:pom.xml
    <dependency>
      <groupid>org.apache.dubbo</groupid>
      <artifactid>dubbo</artifactid>
      <version>2.7.8</version>
    </dependency>

Dubbo入门到精通学习笔记(动力节点王鹤)

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

  1. 解压缩 apache-zookeeper-3.5.5-bin.tar.gz
  2. 修改zookeeper配置文件. zookeeper安装目录/conf/zoo_sample.cfg 拷贝zoo_sample.cfg ,改名为 zoo.cfg
  3. 修改zoo.cfg文件的内容

dataDir=目录,自定义目录,保存zookeeper收到的数据。 目录不要有空格,中文

admin.serverPort=自定义的端口号, 默认是8080, 改为 8888

  1. 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

  1. 提供和消费者的配置文件者,提供zookeeper的地址信息

访问zookeeper:

1)可以zkCli.cmd 客户端程序, 使用 ls 目录

2) 使用图形界面工具。 ZooInspector.zip

​ java -jar zookeeper-dev-ZooInspector.jar

3.5 使用Nacos

地址:https://nacos.io

下载地址: 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

Dubbo入门到精通学习笔记(动力节点王鹤)

使用自定义Filter步骤:

  1. 创建类实现org.apache.dubbo.rpc.Filter接口, 实现invoke()
  2. 配置自定义Filter。 1)在 resources 下创建 META-INF/dubbo 目录 2)创建文本文件,名称org.apache.dubbo.rpc.Filter 3)在文件中,说明自定义的Filter类信息 ​ 自定义过滤器对象名称=自定义过滤器类的全限定名称
  3. 指定提供者使用某个Filter对象

  1. 消费者调用提供者, 先执行filter

第五章: 管理控制台(Dubbo Admin)

5.1 简介

管理控制台:就是一个web应用, 是dubbo服务的管理程序。 配置提供者,消费者的一些参数, 提供访问控制的处理。

管理控制台:是dubbo项目组写好的程序。 我们需要编译安装这个程序就可以。 前端使用的vue框架,后端是SpringBoot。

5.2 下载管理控制台源代码

下载源代码

https://github.com/apache/dubbo-admin

使用步骤:

  1. 下载代码: git clone https://github.com/apache/dubbo-admin.git
  2. dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址
  3. 构建
  4. mvn clean package
  5. 启动 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

使用步骤:

  1. 下载代码: git clone https://github.com/apache/dubbo-admin.git
  2. dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址
  3. 构建
  4. mvn clean package
  5. 启动 cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar
  6. 访问 http://localhost:8080`

Original: https://www.cnblogs.com/daoshangmazai/p/15878902.html
Author: 岛上码仔
Title: Dubbo入门到精通学习笔记(动力节点王鹤)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713534/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球