dubbox概论

1.dubbox 是个啥?
他是一个分布式服务架构风格,其前身是阿里巴巴开源项目Dubbo,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在dubbo基础上进行优化,并继续维护,为了与原有的Dubbo区分,所以命名为Dubbo。
2.有啥用??
Dubbox致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbox就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbox这样的分布式服务框架的需求,并且本质上是个服务调用的东西,说白了就是个远程服务调用的分布式框架。

     *简单说一下RPC*
     PC(Remote Procedure Call)远程过程调用,是一个计算机通信协议。这个协议允许运行于一台计算机的程序调用另一台计算机的子程序,          而程序员无需额外地为这个交互作用编程。说得通俗一点就是:A计算机提供一个服务,B计算机可以像调用本地服务那样调用A计算机的服务。

通过上面的概念,我们可以知道,实现RPC主要是做到两点:

1 实现远程调用其他计算机的服务

  • 要实现远程调用,肯定是通过网络传输数据。A程序提供服务,B程序通过网络将请求参数传递给A,A本地执行后得到结果,再将结果返回给B程序。这里需要关注的有两点:
    • 1)采用何种网络通讯协议
      • 现在比较流行的RPC框架,都会采用TCP作为底层传输协议
    • 2)数据传输的格式怎样?
      • 两个程序进行通讯,必须约定好数据传输格式。就好比两个人聊天,要用同一种语言,否则无法沟通。所以,我们必须定义好请求和响应的格式。另外,数据在网路中传输需要进行序列化,所以还需要约定统一的序列化的方式。

2 像调用本地服务一样调用远程服务

  • 如果仅仅是远程调用,还不算是RPC,因为RPC强调的是过程调用,调用的过程对用户而言是应该是透明的,用户不应该关心调用的细节,可以像调用本地服务一样调用远程服务。所以RPC一定要对调用的过程进行封装

传统项目的缺点包括:
1:模块之间耦合度太高,其中一个功能升级,其他的模块都得一起升级部署。
  2:开发困难,各个团队开发最后都要整合在一起.
  3:系统扩展性差
  4:不能灵活进行分布式部署
解决方案
三把模块才分成独立的工程,单节点运行,如果某一个节点压力大了可以单独对这个节点进行增加配置,其他节点不受影响。缺点就是系统之间交互需要额外的工作量来进行接口的开发。把系统拆分成多个工程,需要完成系统的工程需要多个工程协作完成,这种形式就叫做分布式。

把系统拆分成多个子系统的优点

:
1:把模块拆分,使用接口通信,降低模块之间的耦合度.
  2:把项目拆分成若干个子项目,不同的团队负责不同的子项目.
  3:增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
  4:可以灵活的进行分布式部署.  
5:提高代码的复用性,比如service层,如果不采用分布式rest服务方式架构就会在手
机wap商城,微信商城,pc,android,ios每个端都要写一个service层逻辑,开发量大,
难以维护一起升级,这时候就可以采用分布式rest服务方式,公用一个service层。

其缺点:

   系统之间的交互要使用远程通信,接口开发增大工作量,但是利大于弊 

dubbox的运行原理
在这里插入图片描述

在dubbox这个服务架构中有主要又四个角色
Provider: 暴服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
还有一个Container是服务运行容器。

角色之间的调用关系为
1.服务容器负责启动,加载,运行服务提供者
2.服务提供者在启动时,向注册中心注册自己提供的服务
3.服务消费者在启动时,向注册中心订阅自己所需的服务。
4.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推
送变更数据给消费者;
5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计
据到监控中心。

服务注册中心zookeeper
官方推荐使用 zookeeper 注册中心。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。
Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbox 服务的注册中心,工业强度较高,可用于生产环境
使用zookeepr作为服务中心,首先服务方要编写出真正的实现,把接口和VO对象打成jar包,为消费者提供依赖,编写完真正的实现后我们需要注册到zookeeper服务中心,然后消费者连接zookeeper注册相应的地址引用相关的interface,这就是使用dubbo和zeekeeper的简易流程;
使用dubbo和zookeeper的好处:比如我们有pc端,APP服务端,后台和红包系统都需要进行用户的查询,而且每一个查询都会打开一个数据库连接而且会有重复的代码工作,需要我们进行优化,而且如果不同的模块单独开发,实现的方式实现逻辑不同导致结果不一致。这样我们就可以使用dubbo提供服务,各个模块之间都可以使用,直接操作的是service接口而不是API。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值