Dubbo详解

What:

  Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。

Do:

  • 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
  • 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
  • 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

Spring整合:

  Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

  

...配置文件

原理:

  • ConfigServer
    •   配置中心,和每个Server/Client之间都会做一个实时的心跳检测(因为他们都是建立的Socket长连接),比如几秒钟检测一次;
    •   收集每个Server提供的服务的信息,每个Client的信息,整理出一个服务的列表;
  • Client
    •   调用服务的机器,每个Client启动时,主动与ConfigServer建立Socket长连接,并将自己的ip等相应信息发给ConfigServer;
    •   当有多个服务提供者的时候,Client根据一定得规则来进行负载均衡,比如:轮询、随机、权重等;
  • Server
    •   真正提供服务的机器,每个Server启动时,主动与ConfigServer建立Socket长连接,并将自己的ip,提供的服务名称,端口等信息直接发送给ConfigServer,ConfigServer会收集到每个Server提供的服务信息;

 优点: 

  1,只要在Client和Server启动的时候,ConfigServer是好的,服务就可调用了,如果后面  ConfigServer挂了,那只影响ConfigServer挂了以后服务提供者有变化,而Client还无法感知这一变化。
  2,Client每次调用服务是不经过ConfigServer的,Client只是与它建立联系,从它那里获取提供服务者列表而已
  3,调用服务-负载均衡:Client调用服务时,可以根据规则在多个服务提供者之间轮流调用服务。
  4,服务提供者-容灾:某一个Server挂了,Client依然是可以正确的调用服务的,当前提是这个服务有至少2个服务提供者,Client能很快的感知到服务提供者的变化,并作出相应反应。
  5,服务提供者-扩展:添加一个服务提供者很容易,而且Client会很快的感知到它的存在并使用它。

原文地址:https://www.cnblogs.com/yikuan-919/p/9998839.html