【学习笔记】Dubbo

教学视频:B站尚硅谷Dubbo教学视频
代码资源:dubbo代码资源

一、基础知识

1、分布式基础理论

1.1什么是分布式系统
  • 概念
    由于系统功能庞大,所以将多个独立的计算机组成一个系统,这个系统对外是整体的,但实际是有多个计算机组成。
  • 分布式与微服务
    可以理解为大项目分解小模块是微服务,小模块分布在不同计算机上面是分布式
1.2发展演变

在这里插入图片描述
- ROM:单一应用框架
适用于网站流量小的情况,将所有功能部署在一起,减少部署节点和成本,但不利于应用维护,扩展,修改、分工等工作
- MVC:垂直应用框架
将不用功能分别是部署在不同服务器,便于应对不同流量情况,也便于维护和性能扩展
- RPC:分布式服务框架
由于垂直应用框架的各个功能之间不可能完全没有关系,各个功能之间有很多的联系,在进行前后端修改的时候耦合性较高,所以将后端与前端分离,以接口形式调用,实现前后端解耦
在这里插入图片描述
- SOA:流动计算框架
可以根据访问数量来增加和减少相应服务器
在这里插入图片描述

1.3 RPC
  • 概念
    在这里插入图片描述
  • 过程
    1.调用小助手
    2.小助手找到对应服务端,建立连接
    3.小助手将请求的方法和参数序列化,发送给对方服务器的小助手
    4.对方小助手接受数据后进行反序列化,交给目标服务器
    5.目标服务器根据方法名个参数在本地进行方法调用,然后将该方法的执行结果以同样的方式返回给调用方
    在这里插入图片描述
    RPC框架性能的高低的关键:建立连接 与 序列化反序列化的速度

2、 Dubbo基础知识

  • Dubbo简介
    由于Dubbo可以进行后端服务器的负债均衡,所以为了方便对后端服务的统一管理,引入注册中心,以便监控、识别各个服务的状态
    在这里插入图片描述
    还可以进行灰度发布:新版服务不会一下子全部发布,而是通过不同的路由配置将新服务发布到一定数量的服务器上,若没有发现问题才一步步更新所有服务器

  • 设计架构
    在这里插入图片描述
    0.container:Dubbo服务容器,可以将容器中的服务初始化为实例加入服务提供者
    1.provider:服务提供者,对应后端的各个功能,要将服务同步注册到注册中心
    2.registry:注册中心,提供服务让服务消费者订阅,并实时通知订阅者服务的变化
    3.consumer:服务消费者,从注册中心订阅服务,对服务进行使用/消费
    4.monitor:监控中心,消费者和提供者将消费信息异步发送给监控中心,以便对各种服务做监控

3、 Dubbo环境搭建

  • 注册中心,监控中心dubbo-admin
    官方推荐用zookeeper来作为注册中
    环境搭建参考:Docker安装运行Dubbo
    zookeeper的使用:
    获取节点内容(不接节点名默认根节点):get /节点名
    查看节点:ls /
    创建临时节点:create -e /节点名 节点值
    在这里插入图片描述
  • 创建提供者、消费者
    需求:
    在这里插入图片描述
    在idea中 分别创建三个项目后,将项目导入到其中一个中
    在这里插入图片描述
    orderService:消费者
    userService:提供者
    在这里插入图片描述
    将上述二者的公共部分(bean,service接口)放到一个interfaces项目中
    在这里插入图片描述
    在提供者和消费者引入接口项目的依赖(要讲项目导入到同一个项目中才可以引入依赖)
    在这里插入图片描述
  • 提供者测试
    导入依赖,要注意版本对应
    在这里插入图片描述
    配置
    在这里插入图片描述
    在服务类加上com.alibaba.dubbo.config.annotation.Service的@server注解
    在这里插入图片描述
  • 消费者测试
    与提供者一样,引入相同依赖
    在这里插入图片描述
    配置文件
    在这里插入图片描述
    加入springboot的注解@Server,用reference注入远程服务
    在这里插入图片描述
  • 监控中心:dubbo-minitor-simple
    docker 搞不了先放一放 p11

二、Dubbo配置

  • 启动时检查
    在这里插入图片描述
    -超时、覆盖关系
    在这里插入图片描述
    在这里插入图片描述
    也可以用dubbo.method:timeout来指定特定方法的超时时间,springboot就在@server的注解中添加参数即可(针对方法的配置都放在注解参数中)

  • 重试次数
    请求超时后重试的次数,注册中心有多个同名方法则会自动轮循重试
    非幂等方法不可以设置重试(幂等:方法执行多次的结果一致)

  • 多版本
    在方法中指定version版本号,可以手动进行版本迭代,若不需要指定版本也一定要写出version这个key不然会报错,可以用version=“*”,随机调用任意一个版本

  • 本地存根
    在这里插入图片描述
    在conmuer的注解配置,不指定路径直接用“true”也可以
    在这里插入图片描述

  • 与springboot整合的三种方式
    在这里插入图片描述
    在这里插入图片描述
    将各个对应的key new出来然后返回该方法实例即可

  • 异步调用
    参照官方文档,还有另一种实现方式
    1、定义共同接口
    2、提供者实现接口
    在这里插入图片描述

3、消费者远程调用
针对具体方法的声明如下
在这里插入图片描述

  • 事件通知
    在这里插入图片描述
    在这里插入图片描述

三、高可用

1、zookeeper宕机

在这里插入图片描述
也可以在reference注解中使用url指定提供者的地址和端口,绕开注册中心

2、负载均衡

在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用。
具体实现上,Dubbo 提供的是客户端负载均衡,即由 Consumer 通过负载均衡算法得出需要将请求提交到哪个 Provider 实例。

在这里插入图片描述

在这里插入图片描述

可以在服务端的@service注解参数加入weight设置权重,没有权重就是完完全全的随机调用


在这里插入图片描述
可以不设置权重,这样就是完完全全的轮循


在这里插入图片描述
100ms:上次调用的响应时间
系统会将请求发送给响应时间较小的服务器


在这里插入图片描述
配置方法:Dubbo官方文档配置负载均衡策略
关键词:
在这里插入图片描述

3、服务降级(针对消费端)

1、为了降低服务器资源,屏蔽某些不关键服务
2、当某些不关键业务出错,利用服务降级将其临时屏蔽
在这里插入图片描述
配置:消费端的屏蔽、容错就对应上述两种方式
在这里插入图片描述


四、Dubbo原理

1、rpc和netty原理

在这里插入图片描述
在这里插入图片描述
基于nio的多路复用模型
在这里插入图片描述
流程图
在这里插入图片描述

2、框架设计

在这里插入图片描述

3、标签解析

启动时解析配置文件时需要解析
在这里插入图片描述
项目启动后在spring的dubbobeandefinitionparser中寻找dubbo的配置标签,根据标签将配置内容交给不同的配置类(生成配置实例)去处理(主要是赋值操作)

4、服务暴露过程

5、服务引用过程

6、服务调用过程

听不懂(꒦_꒦)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值