分布式rpc服务调用框架选型:使用dubbo实现分布式服务调用

攻城狮Chova      2022-02-11     608

关键词:

Dubbo概念

  • Dubbo是一个高性能,轻量级的RPC分布式服务框架
  • 提供了三核心能力:

    • 面向接口的远程方法调用(@Reference)
    • 智能容错
    • 负载均衡
  • Dubbo特点: 按照分层的方式来架构,可以使各个层之间解耦合
  • Dubbo的角色:

    • 提供方:Provider
    • 消费方:Consumer
    • Dubbo的提供非常简单的服务模型,要么是提供方提供服务,要么是消费方消费服务

      Dubbo的服务治理

  • 透明远程调用: 调用远程方法就像调用本地方法一样,只需简单配置,没有任何API侵入
  • 负载均衡机制: Client端LB,在内网替代F5等硬件负载均衡器
  • 容错重试机制: 服务Mock数据,重试次数,超时机制
  • 自动注册发现: 注册中心基于接口名查询服务提供者的IP地址,可以添加和删除服务提供者
  • 性能日志监控: Monitor,统计服务的调用次数和调用时间的监控中心
  • 服务治理中心: 路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡

    Dubbo的核心功能

  • Remoting: 远程通讯,提供对多种NIO框架抽象封装,包括"同步转异步"和"请求-响应"模式的信息交换方式
  • Cluster: 服务框架,提供基于接口方法的透明远程过程调用,包括:多协议支持,软负载均衡,容错重试,路由规则,动态配置等集群支持
  • Registry: 服务注册中心,服务自动发现.基于注册中心目录服务,使服务消费方能动态地查找服务提供方,使地址透明,使服务提供方可以平滑地增加和减少机器

    通信模型:
    BIO : 同步并阻塞
    NIO : 异步并阻塞
    AIO : 异步非阻塞
    
    通信框架 : netty

    Dubbo组件角色

    组件角色说明
    Provider暴露服务的服务提供方
    Consumer调用远程服务的服务消费方
    Registry服务注册与发现的注册中心
    Monitor统计服务调用次数和调用时间的监控中心
    Container服务运行容器

    组件调用关系说明

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

    Dubbo Admin管理控制台

  • 管理控制台的主要功能:

    • 路由规则
    • 动态配置
    • 服务降级
    • 访问控制
    • 权限调整
    • 负载均衡

dubbo

...发现等功能)。简单的说,dubbo就是个服务框架,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用,说白了就是个远程服务调用的分布式框架。告别WebService模 查看详情

转载:java分布式服务框架dubbo的介绍与使用

1.Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubb... 查看详情

国内的分布式框架dubbo详细介绍和使用(代码片段)

...的注册与发现、负载均衡、服务治理等功能,简化了分布式系统的开发过程。下面我们将详细介绍Dubbo的原理和使用方法,并附上相关的Java代码示例。Dubbo的原理Dubbo的核心是一个基于Java序列化的远程过程调用(RPC... 查看详情

dubbo3高级特性「框架与服务」rpc全链路调用追踪参数传递(opentracing)

...个功能,使用RpcContext可以为单次调用指定不同配置。如分布式链路追踪场景,其实现原理就是在全链路的上下文中维护一个traceId,Consumer和Provider通过传递traceId来连接一次RPC调用,分别上报日志后可以在追踪系统中串联并展示... 查看详情

dubbo分布式服务框架-study1

本文参考“如何给老婆解释RPC”一文进行的。。。1.首先了解下dubbo:  dubbo是一款高性能、轻量级的开源javaRPC服务框架(RPC即远程过程调用,具体解释见:https://www.jianshu.com/p/2accc2840a1b)。它提供了三大核心能力:面向... 查看详情

rpc(remoteprocedurecall)及其应用(java版)(代码片段)

...,像调用本地函数一样调用远程函数,从而实现分布式应用程序的构建。在RPC中,客户端应用程序发送请求消息到远程服务器,服务器接收请求并执行相应的操作,然后将结果返回给客户端。RPC可以使用多种... 查看详情

dubbo实现rpc调用使用入门

使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian、HTTP、RMI、Memcached、Redis、Thrift等等。由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要关心协议的细节,... 查看详情

分布式服务框架dubbo使用小结

介绍:Dubbo是一个被国内很多互联网公司广泛使用的开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴... 查看详情

从零开始认识dubbo

...1.Dubbo是什么ApacheDubbo是一款高性能JavaRPC框架。Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的... 查看详情

个人学习分布式专题分布式服务治理之dubbo框架

...Spring集成  Dubbo框架  1.1Dubbo是什么:Dubbo是一个分布式服务框架,致力于提高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就 查看详情

手写模拟dubbo实现一个自己的rpc框架

...19/small-dubbo.git什么是RPC?维基百科是这么定义RPC的:在分布式计算,远程过程调用(英语:RemoteProcedureCall,缩写为RPC)是一个计算机通信协议。该协议允许运行于一台计算机 查看详情

golanggolang微服务框架介绍

...cx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的RPC服务框架,基于Golangnet/rpc实现。谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括由当当网维护的dubbox。 不知道dubbo在阿里的内部竞争中败给了HSF,... 查看详情

转载分布式rpc框架性能大比拼

dubbo、motan、rpcx、gRPC、thrift的性能比较Dubbo是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。不过,略有遗憾的是,据说在淘宝内部,dubbo... 查看详情

dubbo怎么不依赖spring

参考技术ADubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案主要核心部件Remoting:网络通信框架,实现了sync-over-async和request-response消息机制.RPC:一个远程过程调用的抽象,支持负... 查看详情

dubbo介绍

1.Dubbo是什么?  (1).Dubbo是Alibaba开源的一个分布式服务框架(远程服务调用的分布式框架)  (2).高性能和透明化的RPC远程服务调用方案  (3).SOA服务治理方案2.Dubbo能做什么?  (1).透明化的远程方法调用    就像调用... 查看详情

分布式架构的基石,简单的rpc框架实现(java)

  RPC架构  RPC的全称是RemoteProcedureCall,它是一种进程间通信方式。允许像调用本地服务一样调用远程服务。   1.RPC框架原理  RPC框架的目标就是让远程过程(服务)调用更加简单、透明,RPC框架负责屏蔽底层的传输... 查看详情

微服务治理之dubbo基础认识(代码片段)

...为什么要用Dubbo1.1远程通信背景技术架构的发展从单体到分布式,是一种顺势而为的架构演进,也是一种被逼无奈的技术变革。架构的复杂度能够体现公司的业务的复杂度,也能从侧面体现公司的产品的发展势头是向... 查看详情

springboot+dubbo简单分布式rpc调用demo(代码片段)

...教程,然后结合网上大佬的一些资料,自己搭了个简单的分布式远程调用案例。这里强调一个东西--记住官方文档第一!!!下面分享一下我的案例代码吧,也希望本案例能对在读的读者启动一点帮助......先来一张简单的架构图... 查看详情