Dubbo
00 min
2024-8-22

概述

  • 服务治理 服务发现与分发
  • 服务通信 组件调用 协议、序列化 通信模型

术语定义

名词
解释
DNS
阿里内部的微服务解决方案 D(dubbo) N(nacos) S(sentinel)
RPC
远程过程调用 把方法入参通过网络传输过去把结果传递回来
云原生
本地开发的程序不经任何修改就可以同步到云环境下
ddd
领域驱动设计架构 与传统MVC区别
dubbo
轻量级 高性能rpc框架 类似产品有grpc、feign
rpc
微服务的核心组件 本地调用的方法变为远程调用
zookeeper
注册中心 rpc事件必须需要把公共的部分注册到注册中心中才可以进行调用 类似产品有 nacos、eureka
微服务
按照模块进行拆分 原来的单体架构升级为多个服务的结构
设计一个rpc 需要考虑什么
  • 通信模型 阻塞式还是非阻塞式
  • 协议 选用什么网络协议
  • 序列化 你的数据格式是怎么样的

Springboot整合Dubbo2.7

核心思路分析

深度封装 把公用配置放置在application.yml中 把个性配置以注解的方式
另外非注解的方式 可参考这里:dubbo整合springboot XML配置

快速上手

  • 注意需要提前启动注册中心!!!! 可以选择zk并启动
  • 新建一个maven项目并删除根节点 xml
  • 新建maven项目模块common-api 作为公共的接口 不需要引入任何依赖
  • 新建provider模块
  • 新建comsumer模块
依赖同上

高级特性

序列化

java类需要实现序列化接口

地址缓存

注册中心挂了 服务是否可以正常访问?
  • 可以 dubbo服务消费者在第一次调用时 会将服务提供方地址缓存到本地 以后再调用则不会访问注册中心
  • 当服务提供者地址发生变化时 注册中心会通知消费者

超时

  • 服务消费者在调用服务提供者的时候发生了阻塞、等待的情形 这个时候服务消费者会一直等待下去
  • 在某个峰值时刻 大量的请求同时请求服务消费者 会造成线程的大量堆积被消耗完 势必造成雪崩
  • dubbo利用超时机制来解决这个问题 设置一个超时时间 在这个时间段内 无法完成服务访问 则自动断开连接
  • 使用timeout属性配置超时时间 默认值是1000 单位毫秒

重试

  • 如果出现网络抖动 则这一次请求失败
  • retries=2 默认重试2次 一共三次

灰度发布

  • 多版本 通过version版本号控制 具体调用的方法

负载均衡

  • Random 按权重随机 默认值是100

数据同步

上一篇
DDD
下一篇
Sodility语言