分布式-RPC-Dubbo基础

举报
object 发表于 2024/04/26 17:00:19 2024/04/26
【摘要】 Dubbo?Dubbo是一款高性能、轻量级的开源WEB和RPC框架。六大核心能力:面向接口代理的高性能RPC调用只能容错和负载均衡服务自动注册和发现高度可拓展能力运行期流量调度可视化的服务治理与运维Dubbo作用?dubbo的出现是为了解决什么问题:主要解决分布式场景下,复杂的后端服务远程调用的复杂关系,以及负载均衡等性能调节能力负载均衡:同一个服务部署在不同机器时该调用哪台机器的服务服务调...

Dubbo?

Dubbo是一款高性能、轻量级的开源WEB和RPC框架。

六大核心能力:

  • 面向接口代理的高性能RPC调用
  • 只能容错和负载均衡
  • 服务自动注册和发现
  • 高度可拓展能力
  • 运行期流量调度
  • 可视化的服务治理与运维


Dubbo作用?

dubbo的出现是为了解决什么问题:主要解决分布式场景下,复杂的后端服务远程调用的复杂关系,以及负载均衡等性能调节能力

  • 负载均衡:同一个服务部署在不同机器时该调用哪台机器的服务
  • 服务调用链路生成:分布式服务调用的错综复杂情况,解决服务之间的调用
  • 服务访问压力以及市场统计、资源调度和治理:基于访问压力实时管理集群容量、利用率
  • ...


Dubbo架构的核心角色

  • Container: 服务运行容器,负责加载、运行服务提供者。必须。
  • Provider:暴露服务的服务提供方,回向注册中心注册自己提供的服务。必须
  • Consumer:调用远程服务的服务消费方,会向注册中心订阅自己所需的服务。必须
  • Registry: 服务注册与发现的注册中心。 注册中心会返回服务提供者地址列表给消费者。 非必须
  • Monitor: 统计服务的调用次数和调用时间的监控中心。 服务消费者和提供者会定时发送统计数据到监控中心。 非必须

Invoker介绍:Invoker不是一个角色,但它在dubbo中经常出现,也是比较重要的部分,他是远程调用所需要的细节实现封装,Invoker实现了真正的远程服务调用。


Dubbo的SPI机制?

SPI(Service Provider Interface)机制被大量用在开源项目中,它可以帮助我们动态寻找服务/功能(比如复杂均衡个策略)的实现

SPI的具体原理: 我们将接口的实现类放在配置文件中,通过反射加载实现类。这样可以再运行的时候,动态替换接口的实现类。和IOC的解耦思想类似

JAVA本身就提供了SPI机制,Dubbo对其进行了增强。


Dubbo的架构?

Dubbo采用 微内核 + 插件模式架构模式

什么是微内核架构:微内核只负责组装插件。包含两类组件:核心系统和插件模块

核心系统提供系统所需核心能力,插件模块可以拓展系统的工鞥。因此,基于微内核架构的系统,非常易于拓展功能。

Dubbo的一些小问题

  1. 注册中心的作用:注册中心负责服务地址的注册与查找,服务提供者与消费者只在启动时与注册中心交互
  2. 服务提供者宕机,注册中心会?:注册中心会立即推送事件通知消费者
  3. 监控中心的作用:负责统计各服务调用次数,调用时间等
  4. 注册中心和监控中心宕机,服务会挂掉吗:不会,两者宕机不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表。注册中心和监控中心都是可选的,服务消费者可以直连服务提供者

Dubbo序列化协议

Duboo支持哪些序列化

JDK自带的序列化、hessian2、JSON、Kryo、FST、Protostuff、ProtoBuf等

Dubbo默认使用的序列化方式是hessian2

这些序列化协议的区别

  1. JDK自带的序列化:不支持跨语言调用,性能差
  2. JSON:性能差
  3. Protostuff,ProtoBuf,hessian2:都是跨语言的序列化方式
  4. Kryo和FST:性能较好,针对java语言设计




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。