zoukankan      html  css  js  c++  java
  • 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会很快的感知到它的存在并使用它。

  • 相关阅读:
    分享一个一直在用的golang单测小脚本
    JakeCoffman/Cron定时任务库核心实现源码解析
    uniapp h5部署二级目录
    Selenium
    Unable to connect to the server: x509: cannot validate certificate for 172.25.97.19 because it doesn't contain any IP SANs
    python
    chrome
    edit-plus 添加单引号 ''
    CALL_AND_RETRY_LAST Allocation failed
    nacos 客户端异常:SocketTimeoutException: connect timed out
  • 原文地址:https://www.cnblogs.com/yikuan-919/p/9998839.html
Copyright © 2011-2022 走看看