Dubbo基础

一,dubbo是什么

dubbo简介

  1. 轻量级,高性能的RPC框架

  2. 并不是要称为一个微服务的全面解决方

  3. 以java语言出名,目前还包含其他语言

dobbo现状:

  1. 全称是apache dubbo

  2. 微店,网易云音乐,考拉,滴滴,中国电信,人寿都在用

  3. star有30k+个,fork有20k+个

二,RPC和http

RPC介绍

  • RPC–远程过程调用

  • 早期单机时代:IPC(单个电脑运行的进程间相互通信,比如a有画图功能,b只需要去调用a的功能即可,但是只局限在自己的电脑上)

  • 网络时代:把IPC扩展到网络上,这就是RPC(想要调用其他电脑上的功能,通过网络来传输,有了这个之后,多台电脑之间就可以相互通信了)

  • 实现RPC很头疼,于是就有了RPC框架

  • 实现效果调用其他机器上的程序和调用本地的程序一样方便

常见的RPC框架

  • 阿里的dubbo:性能

  • 新浪的montan:轻量级,便于理解

  • facebook的thrift:支持的语言多

  • 各个框架都有各自的优缺点

http和RPC对比

  1. 它们就像普通话与方言,http是普通话,rpc是方言,http通用,没有很大的沟通和学习成本,给一个接口地址,调用传参大家都懂,但是它规定了比如请求头怎么写,传输有哪些要求,这样一来效率相对降低。如果是企业内部,使用RPC更加高效,传输和运行效率会更高。

  2. 普通话本质上也是一种方言,只不过它是官方方言,http和rpc在本质上并没有区别,只不过http有些优势被选为官方而已。

    具体区别如下:

    • 传输效率:rpc可以自己定制请求,可以让整体传输内容更少,这样效率更高。http会包含一些无用内容,使用传输效率相对较低

    • 性能消耗,主要在于序列化和反序列化的耗时。RPC可以实现高效二进制传输,http大部分需要用json格式传递信息,需要把json格式转换为其他对象,这样相对来说比较耗时

    • 负载均衡:PRC自带负载均衡策略,http需要借助其他组件,比如eginx

选型建议:

  1. 看看公司内部的技术栈是否统一,如果是java,PHP,可以选择http,因为学习成本低,通信起来也没用任何障碍。

  2. 技术栈非常统一,都是java工程师,而且希望程序性能好,用户对延迟非常敏感,这个时候可以选择RPC框架。

三,dubbo工作原理

在这里插入图片描述

  1. 服务容器负责启动,加载,运行服务提供者

  2. 服务提供者在启动时,向注册中心注册自己提供的服务

  3. 服务消费者在启动时,向注册中心订阅自己所需的服务

  4. 注册中心返回服务提供者地址列表给消费者

  5. 从提供者地址列表中,选一台提供者进行调用

  6. 提供者和消费者定期发送一次统计数据到监控中心

    在这里插入图片描述

相关文章

在网络请求时,总会有各种异常情况出现,我们需要提前处理这...
作者:宇曾背景软件技术的发展历史,从单体的应用,逐渐演进...
hello,大家好呀,我是小楼。最近一个技术群有同学at我,问我...
 一个软件开发人员,工作到了一定的年限(一般是3、4年左右...
当一个服务调用另一个远程服务出现错误时的外观Dubbo提供了多...
最近在看阿里开源RPC框架Dubbo的源码,顺带梳理了一下其中用...