zoukankan      html  css  js  c++  java
  • dubbo学习笔记

    Dubbo的启动方式

    依赖容器(Tomcat)

    使用main方法

    使用内置的main方法

    Dubbo控制台和监控台配置

    配置控制台

     

    查看maven的版本信息

    执行源码的编译和打包操作

    最后编译结果为如下,表示成功了。

    部署dubbo管控台

    1、在打包后的application.properties文件中修改对应配置信息

    2、部署dubbo控制台

    通过localhost:7001 访问控制台 (默认账号和密码相同)

    配置监控台

    1、找到这个目录下面对应文件

    2、解压这个.gz文件,进行相应的配置

    3、启动监控台(通过start.bat/start.sh启动)

    4、解决操作的过程的数据不能够显示到监控台的问题?

    在每一个服务的配置文件中添加一句配置

    服务检查

    表示启动的时候不做检查依赖,主要用于服务的循环依赖的实例 check设置为false,check默认为true

     

    多协议支持

    dubbo (默认) ,长连接协议 【操作过程中数据量比较小的传输】,不适用视频,大文件等传输操作。

    hessian 短连接协议(传输数据量比较大情况,在项目开发中会针对不同流量来进行协议的设定)

    1、引入依赖

    <dependency>
      <groupId>com.caucho</groupId>
      <artifactId>hessian</artifactId>
      <version>4.0.7</version>
    </dependency>

    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <version>6.1.26</version>
    </dependency>

    2、在对应配置文件添加协议

    <dubbo:protocol name="hessian" port="20999"/>

    webservice

    rmi

    http

    thirft

    一个服务一个协议

    一个服务多个协议

    多注册中心

    多版本支持

    消费端指定不同的版本号

    消费端异步调用(只支持Dubbo协议)

    ### RpcContext.getContext().getFuture(); 获取异步对象

    public static void main( String[] args ) throws InterruptedException, ExecutionException {
           ApplicationContext
                   context = new ClassPathXmlApplicationContext("spring/application-consumer.xml");
           ApiDemoTest demoTest = (ApiDemoTest) context.getBean("apiDemoTest");
           String admin = demoTest.login("admin", "123");
           Future<String> future = RpcContext.getContext().getFuture();
           System.out.println("main:" + admin);
           System.out.println("结果:"+future.get()); // 阻塞等待结果
           System.out.println("=========");

      }

     

    主机绑定问题(解决注册中心上面注册的是服务器名称问题)

    ServiceConfig-> findConfigedHosts的源码

    PC: Gerry-PC:8080/ => 192.168.3.22:8080

    直连/服务只订阅/服务只注册(针对测试)[开发环境]

    服务只订阅:

    场景: 我们开发中服务在测试的时候不能直接注册到注册中心。

     

    1、在服务端的的配置中

    2、在消费端通过在dubbo:references 配置如下:

     

    服务只注册:

    场景: 注册中心的服务只对内部服务提供订阅,外部服务订阅不了。

    服务端配置:

    负载均衡(配置实现)

    RandomLoadBalance -> random  随机负载均衡 (默认的)
    RoundRobinLoadBalance -> roundrobin   轮询负载均衡
    LeastActiveLoadBalance -> leastactive 最小响应时间负载均衡
    ConsistentHashLoadBalance -> consistenthash 一致性hash负载均衡

    消费端配置负载均衡策略

     

    服务调用超时问题

    1、建议开发的服务都设置重试次数和超时时间。

     

    集群容错

    Failover cluster 失败的时候将自动切换并重试其他的服务器。通过 retries=2 来设置重试的次数

    Failfast cluster 快速失败,只发起一次调用;写操作,比如新增记录,非幂等请求。

    Failsafe cluster 失败安全,出现异常信息,直接忽略异常。主要用于日志操作出现异常情况。

    Failback cluster 失败自动恢复,后台记录失败请求,定时重发这个信息(消息推送)

    Forking cluster 并行调用多个服务,只要一个成功就返回,只应用在读数据的时候。

    BroadCast cluster 广播调用所有服务提供者,逐个调用,只要有一个报错就返回异常

     

    消费端做如下的配置即可:

    Dubbo源码结构:

     

     

    代码示例:

    https://gitee.com/lm970585581/code_base/tree/master/dubbo%E4%BD%BF%E7%94%A8XML%E9%85%8D%E7%BD%AE%E4%BB%A3%E7%A0%81

     

    https://gitee.com/lm970585581/code_base/tree/master/%E7%BA%AF%E6%B3%A8%E8%A7%A3Dubbo%E6%96%B9%E5%BC%8F

     

  • 相关阅读:
    【Git】windows上git命令中文乱码的问题
    【spring boot】集成了druid后,同样的mybatis模糊查询语句出错Caused by: com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'name LIKE '%' ? '%'
    【log4j】springboot项目启动 ,使用的druid数据源,log4j报错 log4j:WARN Please initialize the log4j system properly.
    ScheduledExecutorService run方法要加入try catch
    基于t-io的MI工具实现
    Java 8:不要再用循环了 Stream替代for循环
    java gzip压缩与解压
    Java将字符串写入文件与将文件内容读取到字符串
    Des加解密
    spring boot 利用redisson实现redis的分布式锁
  • 原文地址:https://www.cnblogs.com/lm970585581/p/11069744.html
Copyright © 2011-2022 走看看