1.什么是 Dubbo?

Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

另外,在开源中国举行的2018年度最受欢迎中国开源软件这个活动的评选中,Dubbo 更是凭借其超高人气仅次于 vue.js 和 ECharts 获得第三名的好成绩。

Dubbo 是由阿里开源,后来加入了 Apache 。正式由于 Dubbo 的出现,才使得越来越多的公司开始使用以及接受分布式架构。

2.什么是 RPC?RPC原理是什么?

什么是 RPC?

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求当然可以,但是可能会比较麻烦。 RPC的出现就是为了让你调用远程方法像调用本地方法一样简单。

RPC原理是什么?

  1. 服务消费方(client)调用以本地调用方式调用服务;
  2. client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
  3. client stub找到服务地址,并将消息发送到服务端;
  4. server stub收到消息后进行解码;
  5. server stub根据解码结果调用本地的服务;
  6. 本地服务执行并将结果返回给server stub;
  7. server stub将返回结果打包成消息并发送至消费方;
  8. client stub接收到消息,并进行解码;
  9. 服务消费方得到最终结果。

3.为什么要用 Dubbo?

Dubbo 的诞生和 SOA 分布式架构的流行有着莫大的关系。SOA 面向服务的架构(Service Oriented Architecture),也就是把工程按照业务逻辑拆分成服务层表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。SOA架构中有两个主要角色:服务提供者(Provider)和服务使用者(Consumer)

如果你要开发分布式程序,你也可以直接基于 HTTP 接口进行通信,但是为什么要用 Dubbo呢?

我觉得主要可以从 Dubbo 提供的下面四点特性来说为什么要用 Dubbo:

  1. 负载均衡——同一个服务部署在不同的机器时该调用那一台机器上的服务。
  2. 服务调用链路生成——随着系统的发展,服务越来越多,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。Dubbo 可以为我们解决服务之间互相是如何调用的。
  3. 服务访问压力以及时长统计、资源调度和治理——基于访问压力实时管理集群容量,提高集群利用率。
  4. 服务降级——某个服务挂掉之后调用备用服务。

另外,Dubbo 除了能够应用在分布式系统中,也可以应用在现在比较火的微服务系统中。不过,由于 Spring Cloud 在微服务中应用更加广泛,所以,我觉得一般我们提 Dubbo 的话,大部分是分布式系统的情况。

4.什么是分布式?

分布式或者说 SOA 分布式重要的就是面向服务,说简单的分布式就是我们把整个系统拆分成不同的服务然后将这些服务放在不同的服务器上减轻单体服务的压力提高并发量和性能。比如电商系统可以简单地拆分成订单系统、商品系统、登录系统等等,拆分之后的每个服务可以部署在不同的机器上,如果某一个服务的访问量比较大的话也可以将这个服务同时部署在多台机器上。

5.为什么要分布式?

从开发角度来讲单体应用的代码都集中在一起,而分布式系统的代码根据业务被拆分。所以,每个团队可以负责一个服务的开发,这样提升了开发效率。另外,代码根据业务拆分之后更加便于维护和扩展。

另外,我觉得将系统拆分成分布式之后不光便于系统扩展和维护,更能提高整个系统的性能。你想一想嘛?把整个系统拆分成不同的服务/系统,然后每个服务/系统 单独部署在一台服务器上,是不是很大程度上提高了系统性能呢

需要更多教程,微信扫码即可

Dubbo(RPC原理、Dubbo架构负载均衡配置方式)(1)相关推荐

  1. Dubbo(RPC原理、Dubbo架构负载均衡配置方式)(2)

    1.Dubbo 的架构图解 上述节点简单说明: Provider: 暴露服务的服务提供方 Consumer: 调用远程服务的服务消费方 Registry: 服务注册与发现的注册中心 Monitor: ...

  2. Dubbo(RPC原理、Dubbo架构负载均衡配置方式)(3)

    1.什么是负载均衡 先来个官方的解释. 维基百科对负载均衡的定义:负载均衡改善了跨多个计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动的的工作负载分布.负载平衡旨在优化资源使用,最大 ...

  3. springboot dubbo负载均衡配置

    springboot dubbo负载均衡配置 1.多zookeeper yml配置 2.负载配置 random roundRobin leastActive consistentHash 1.多zoo ...

  4. Dubbo 负载均衡配置

    Dubbo 负载均衡配置 Dubbo 提供了4种负载均衡实现,分别是基于权重随机算法的 RandomLoadBalance.基于最少活跃调用数算法的 LeastActiveLoadBalance.基于 ...

  5. Dubbo内置4种负载均衡算法(详解)

    1.1 什么是负载均衡 在实际开发中,一个服务基本都是集群模式的,也就是多个功能相同的项目在运行,这样才能承受更高的并发,这时一个请求到这个服务,就需要确定访问哪一个服务器 Dubbo框架内部支持负载 ...

  6. dns服务器怎么优化,总结DNS服务器负载均衡配置的原理及优缺点

    负载均衡技术能够平衡服务器集群中所有的服务器和请求应用之间的通信负载,根据实时响应时间进行判断,将任务交由负载最轻的服务器来处理,以实现真正的智能通信管理和最佳的服务器群性能,从而使网站始终保持运行和 ...

  7. L4和L7负载均衡原理和常用负载均衡架构实现

    L4和L7负载均衡原理 四层负载均衡原理 所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器.以常见的TCP为例,负载均衡设备在接 ...

  8. 地址设置nginx负载均衡_nginx负载均衡配置实例

    什么是负载均衡? 负载均衡主要通过专门的硬件设备或者通过软件算法实现.通过硬件设备实现的负载均衡效果好.效率高.性能稳定,但是成本比较高.通过软件实现的负载均衡主要依赖于均衡算法的选择和程序的健壮性. ...

  9. Nginx+Tomcat负载均衡配置

     Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?下面然给我们详细来了解一下吧 Ng ...

最新文章

  1. Linux下关闭和开启IPv6的方法
  2. STC15分时内核中函数指针的使用问题
  3. C++ Lambda表达式基本用法
  4. crc16码表的使用_查表法计算CRC16校验值
  5. python文件传输模块_[宜配屋]听图阁 - python 使用poster模块进行http方式的文件传输到服务器的方法...
  6. win7 32位php安装包下载地址,appserv官方下载|AppServ(php环境安装包)下载v8.6 64位/32位 支持win7/win8/win10_ IT猫扑网...
  7. 小白怎么学习云计算?2020云计算学习大纲
  8. 查看vnc端口_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器
  9. BZOJ4012[HNOI2015]开店——树链剖分+可持久化线段树/动态点分治+vector
  10. redis分表_《面试官系列:深入数据库分区分库分表》
  11. 如何检查计算机账号克隆
  12. java path环境变量_java配置环境变量
  13. 安全优雅的RESTful API签名实现方案(手机端)
  14. 《图解TCP/IP》——第一章 网络通讯基础
  15. 51单片机计算机实物焊接,51单片机实验DIY焊电源--串口详细步骤
  16. 哪个录音软件最好用?推荐几款录音软件给你
  17. 28335ADDA的片选信号
  18. flume安装以及应用
  19. python 实时行情_Python实现股票行情接收V010
  20. 思维导图工具TheBrain的五个经典功能介绍

热门文章

  1. 全球最伟大社交软件!微信入选“现代百大设计最佳产品”:排名超Facebook
  2. 助力高校数字化建设,QQ小程序开发大赛正式启动
  3. 看我七十二变!AI换脸软件“ZAO”一夜爆红:服务器满负荷
  4. QQ 20周年 腾讯把经典提示音“嘀嘀嘀嘀”做成了一首歌!
  5. 支付宝上线新功能:一定要给家人开通!
  6. linux学习杂记_socket编程(含select)
  7. 禁用了ssh的密码认证方式导致无法登陆
  8. Python常用图像处理
  9. opencv 识别机车
  10. java邮箱代码_java邮箱开发代码——发邮件