Dubbo概述及基本使用
Posted 踩踩踩从踩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo概述及基本使用相关的知识,希望对你有一定的参考价值。
前言
本篇文章主要介绍的是dubbo框架的介绍以及使用 ,核心功能解析 然后 dubbo协议的分析 以及一个简单的dubbo框架。
dubbo概述
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协议
dubbo:// 协议参考手册
Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。
头部:请求/响应都包含的数据 Magic :一个固定的特殊标志 Flag :区分几。,求/响应/ · 列化方- StatuS :请求执行后的响应状态 messageld :序列号,第几次请求 bodyLength : Body 内容的长度
在测试 协议 传输速度的情况
以上是关于Dubbo概述及基本使用的主要内容,如果未能解决你的问题,请参考以下文章
(2021-3-13)ElasticSearch学习之基本原理概述