Dubbo概述及基本使用

前言

 本篇文章主要介绍的是dubbo框架的介绍以及使用 ,核心功能解析 然后 dubbo协议的分析 以及一个简单的dubbo框架。

dubbo概述

dubbo官网

Apache Dubbo

Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案,涵盖 Java、Golang 等多种语言 SDK 实现。

现在已经更新到了3.0了

 Dubbo3 相比 2.7 版本进行了全面的升级,以下是新增的一些核心特性

相比于 2.x 版本中的基于接口粒度的服务发现机制,3.x 引入了全新的基于应用粒度的服务发现机制, 新模型带来两方面的巨大优势:

  • 进一步提升了 Dubbo3 在大规模集群实践中的性能与稳定性。新模型可大幅提高系统资源利用率,降低 Dubbo 地址的单机内存消耗(50%),降低注册中心集群的存储与推送压力(90%), Dubbo 可支持集群规模步入百万实例层次。
  • 打通与其他异构微服务体系的地址互发现障碍。新模型使得 Dubbo3 能实现与异构微服务体系如Spring Cloud、Kubernetes Service、gRPC 等,在地址发现层面的互通, 为连通 Dubbo 与其他微服务体系提供可行方案。

在 Dubbo3 前期版本将会同时提供对两套地址发现模型的支持,以最大程度保证业务升级的兼容性。

定义了全新的 RPC 通信协议 – Triple,一句话概括 Triple:它是基于 HTTP/2 上构建的 RPC 协议,完全兼容 gRPC,并在此基础上扩展出了更丰富的语义。 使用 Triple 协议,用户将获得以下能力

  • 更容易到适配网关、Mesh架构,Triple 协议让 Dubbo 更方便的与各种网关、Sidecar 组件配合工作。
  • 多语言友好,推荐配合 Protobuf 使用 Triple 协议,使用 IDL 定义服务,使用 Protobuf 编码业务数据。
  • 流式通信支持。Triple 协议支持 Request Stream、Response Stream、Bi-direction Stream

 我们在开发过程,基于RMI和hessian进行简单的暴露和引用远程服务,服务的软负载均衡,现在很多框架都比较成熟了, 都做了这些管理等。  

通过配置服务服务软负载均衡通过服务注册中心,动态地注册发现服务,使服务的位置透明,实现软负载均衡和容错机制,降低对硬件负载均衡器的依赖,减少部分成本
服务依赖管理服务间依赖关系错踪复杂时,人工难以描述,需要自动画出应用间的依赖关系图。
服务监控统计服务每天的调用量、响应时间,作为容最规划的参考指标。将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达闭值,记录此时的访问量,再以此访问量乘以机器数反推总容量。服务治理可在线动态调整机器权重、服务分组隔离、禁启用服务。

特别是大型的网络公司,对于这种管理 更加规范化,这样更加易于管理等等。  依赖关系等等。

对于服务的监控,日志管理, 应用间的管理,  在服务的情况下 都在做的处理, 综合的情况下。

对于dubbo来说 一直在丰富功能,以及 内存优化等等。

provider 服务提供者:
我们的 service ,实际执行业务逻辑的服务层。 
Consumer 服务消费者:
专门调用 serviCe 的,不关注 service 具体实现的应用层。
Registry 注册中心:
存储 provi der , consumer 信息的中介。 
Monitor : 
 Dubbo 负责收集服务调用信息的监控中心。

 dubbo框架调用的过程

调用关系

1 .服务容器负责启动,加载,运行服务提供者。
2 .服务提供者在启动时,向注册中心注册自己提供的服务。 
3 .服务消费者在启动时,向注册中心订阅自己所需的服务。
4 .注册中心返回服务提供者地址列表给消费者,如果有变更,更数据给消费者。
5 .服务消费者,从提供者地址列表中,基于软负载均衡算法,调用失败,再选另一台调用。
6 .服务消费者和提供者,在内存中累计调用次数和调用时间,到监控中心。注册中心将基于长连接推送变选一台提供者进行调用,如果定时每分钟发送一次统计数据

架构特点

具有连通性 、健壮性、伸缩性、以及向未来架构的升级性。

监控中心宕机不影响连通性,两个组件可选,服务消费端可直连。
健壮性服务   提供者无状态,任意一台宕机不影响使用,全宕机,无限重连。
伸缩性   注册中心集群,可动态增加部署实例,客户端自动发现新的注册中心。可动态增减服务者实例,注册中心将推送新的服务提供者信息给消费者。
升级性  升级到流动式计算,目前的架构毫无压力

dubbo的依赖

必须依赖 JOKI . 6 + ,理论上 dOubbo 可以只依赖 JOK ,不依赖于任何三方库运行,只需配置使用 JOK 

相关实现策略缺省依赖通过’ mvn dependency : tree > dep . log ’命令分析 【 INFO 』 
可选依赖其他三方相关依赖的java,有用到则需要依赖。

jdk的动态代理,

dubbo的使用方式

做成rpc的服务,  远端服务进行调用。增加rpc的能力,远程过程的调用能力,

dubbo的三种配置方式

使用dubbo注解

使用 Dubbo 注解使用简单,有一定的侵入性,需要实现类需要依赖 Oubbo 
注解集成 Spring XML
 使用稍显麻烦,可做到无侵入性,方便以后改用其他 RpC 框架
使用原生 API 编程开发麻烦,

一般用于测试、开放 APi 的场景

 使用dubbo的步骤

1 .引入 dubobo 相关依赖 
2 .配置 dubbo 框架(提供了 3 中配置方式)
3 .开发服务 
4 .配置服务
5 .启动、调用

 

 Springboot上集成Dubbo

@EnableDubbo注解

1.引入对应jar .
2.在 springboot 的启动类上加@EnableDubbo 注解开启 dubbo 
(服务提供者、消费者的是一样的,扫描的包可能不一样) 
3 .在 application . yml 中配置 dubbo

 

 

 

dubbo核心功能

 

 

动态代理的情况,进行异步的处理。远程进行调用

通过代理工厂去查找 创建实现类。

 

包括解码和编码 等。 doinvoke 方法

 netty框架

 

 响应消息。去做的操作。

接受响应。

 

 

dubbo的智能负载均衡

 负载均衡

  随机     按权重设置随机概率轮询  权重设置轮询的比率。

集群的容错方案。  包括

 

 

 

 

 

容错机制 

 

远端过程调用 dubbo中rpc协议

RPC协议 | Apache Dubbo

dubbo:// 协议参考手册

Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。

反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

 

 

 

头部:请求/响应都包含的数据 
Magic :一个固定的特殊标志
Flag :区分几。,求/响应/ · 列化方- 
StatuS :请求执行后的响应状态
messageld :序列号,第几次请求 
bodyLength : Body 内容的长度

 

 在测试  协议 传输速度的情况

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踩踩踩从踩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值