zoukankan      html  css  js  c++  java
  • Dubbo:3

    • 服务启动检查配置
    默认check=true
    
    dubbo:reference  check=“false” 关闭某个服务的启动时检查:(没有提供者时报错)
    
    dubbo:consumer  check=“false”  关闭所有服务的启动时检查:(没有提供者时报错) 写在定义服务消费者一方
    
    dubbo:registry  check=“false” 关闭注册中心启动时检查:(注册订阅失败时报错)
    • 多协议支持:dubbo支持的协议(本身支持多协议): dubbo、RMI、hessian、webservice、http、Thrift
      • hessian演示:
      • 服务端改造
        • 引入jar包
    <dependency>
      <groupId>com.caucho</groupId>
      <artifactId>hessian</artifactId>
      <version>4.0.38</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <version>6.1.26</version>
    </dependency>
    View Code
        • 修改provider.xml

      

        • 指定service服务的协议版本号

     

      • 消费端改造
        • 配置:

     

    • 多注册中心支持
      • 服务端配置改造:

    • 多版本支持
      • 服务端配置改造:

      • 客户端调用的时候配置:

    • 异步调用:async="true"表示接口异步返回。hessian协议,使用async异步回调会报错。配置:

    • 主机绑定:provider://10.0.1.183:20880/com.karat.cn.order_api.IOrderServices
     1 if (NetUtils.isInvalidLocalHost(host)) {
     2     anyhost = true;
     3     try {
     4         host = InetAddress.getLocalHost().getHostAddress();
     5     } catch (UnknownHostException e) {
     6         logger.warn(e.getMessage(), e);
     7     }
     8 if (NetUtils.isInvalidLocalHost(host)) {
     9     if (registryURLs != null && registryURLs.size() > 0) {
    10         for (URL registryURL : registryURLs) {
    11             try {
    12                 Socket socket = new Socket();
    13                 try {
    14                     SocketAddress addr = new InetSocketAddress(registryURL.getHost(), registryURL.getPort());
    15                     socket.connect(addr, 1000);
    16                     host = socket.getLocalAddress().getHostAddress();
    17                     break;
    18                 } finally {
    19                     try {
    20                         socket.close();
    21                     } catch (Throwable e) {}
    22                 }
    23             } catch (Exception e) {
    24                 logger.warn(e.getMessage(), e);
    25             }
    26         }
    27     }
    28     if (NetUtils.isInvalidLocalHost(host)) {
    29         host = NetUtils.getLocalHost();
    30     }
    31 }
      •  主机绑定实现步骤:
    1. 通过<dubbo:protocol host配置的地址去找。
    2. host = InetAddress.getLocalHost().getHostAddress()。
    3. 通过socket发起连接连接到注册中心的地址。再获取连接过去以后本地的ip地址。
    4. host = NetUtils.getLocalHost()。
    • dubbo服务只订阅:当前服务正在开发,不能提供服务给其它消费端使用,但是自己还得作为消费端使用其它服务,那么自己服务就不注册到注册中心,但是还连接到服务中心去调其它服务,不去影响其它服务。配置:

    • dubbo服务只注册:只提供服务,不去调用其它服务。配置:<dubbo:registry subscribe="false"/>

     

    • 负载均衡:在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用。可以自行扩展负载均衡策略:loadbalance="randon"

    • Random LoadBalance:随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。
    • RoundRobin LoadBalance:轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。

    • LeastActive LoadBalance:最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。
    • ConsistentHash LoadBalance:一致性Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。

    • 连接超时timeout:为了避免超时导致客户端资源(线程)挂起耗尽,必须设置超时时间 timeout="2000"

    • 集群容错
    1. Failover cluster  失败的时候自动切换并重试其他服务器。 通过retries=2。 来设置重试次数
    2. failfast cluster 快速失败,只发起一次调用  ; 写操作。比如新增记录的时候, 非幂等请求
    3. failsafe cluster  失败安全。 出现异常时,直接忽略异常
    4. failback cluster 失败自动恢复。 后台记录失败请求,定时重发
    5. forking cluster 并行调用多个服务器,只要一个成功就返回。 只能应用在读请求
    6. broadcast cluster  广播调用所有提供者,逐个调用。其中一台报错就会返回异常

  • 相关阅读:
    Attach Files to Objects 将文件附加到对象
    Provide Several View Variants for End-Users 为最终用户提供多个视图变体
    Audit Object Changes 审核对象更改
    Toggle the WinForms Ribbon Interface 切换 WinForms 功能区界面
    Change Style of Navigation Items 更改导航项的样式
    Apply Grouping to List View Data 将分组应用于列表视图数据
    Choose the WinForms UI Type 选择 WinForms UI 类型
    Filter List Views 筛选器列表视图
    Make a List View Editable 使列表视图可编辑
    Add a Preview to a List View将预览添加到列表视图
  • 原文地址:https://www.cnblogs.com/LJing21/p/10571042.html
Copyright © 2011-2022 走看看