• dubbo常用配置及注意事项


    1、启动时检查
     缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true。
     关闭所有服务的启动时检查:(没有提供者时报错)
             <dubbo:consumer check="false" />
     关闭某个服务的启动时检查:(没有提供者时报错)
         <dubbo:reference interface="com.foo.BarService" check="false" />
    其它的启动时检查还包括:注册中心

    2、直连提供者
     在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,
      点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表。
      <dubbo:reference id="xxxService" interface="com.alibaba.xxx.XxxService" url="dubbo://localhost:20890" />  
     

    3、服务分组
        当一个接口有多种实现时,可以用group区分。
    provider:
    <dubbo:service group="feedback" interface="com.xxx.IndexService" ref="indexServiceFeedback" />
    <dubbo:service group="member" interface="com.xxx.IndexService"   ref="indexServiceMember" />

    cosumer:
    <dubbo:reference id="feedbackIndexService" group="feedback" interface="com.xxx.IndexService" />
    <dubbo:reference id="memberIndexService" group="member" interface="com.xxx.IndexService" />

    4、多版本
    当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
    一般处理步骤
      1)在低压力时间段,先升级一半提供者为新版本
      2)再将所有消费者升级为新版本
      3)然后将剩下的一半提供者升级为新版本
      <dubbo:service interface="com.foo.BarService" version="1.0.0" />
      <dubbo:service interface="com.foo.BarService" version="2.0.0" />
     

    5、异步调用
    可完成并行调用多个远程服务。异步总是不等待返回。
    <dubbo:reference id="fooService" interface="com.alibaba.foo.FooService">
        <dubbo:method name="findFoo" async="true" />
    </dubbo:reference>

    6、延迟暴露
     如果你的服务需要Warmup时间,比如初始化缓存,等待相关资源就位等,可以使用delay进行延迟暴露。
     <dubbo:provider delay="-1" />
     当然,也可以配置到服务级别,但有些需要地方需要注意。
     

    7、dubbo:protocol属性
      threadpool:线程池类型,可选:fixed/cached ,默认fixed 。
      threads :服务线程池大小(固定大小) ,默认为100
     
      payload:请求及响应数据包大小限制,单位:字节,默认为88388608(=8M)
      如:
      <dubbo:protocol name="dubbo" port="27001" threadpool="cached" threads="20"/>
     
      ThreadPool
      fixed 固定大小线程池,启动时建立线程,不关闭,一直持有。(缺省)
      cached 缓存线程池,空闲一分钟自动删除,需要时重建。
      limited可伸缩线程池,但池中的线程数只会增长不会收缩。(为避免收缩时突然来了大流量引起的性能问题)。

    8、dubbo:application
     <dubbo:application name="xxx_service" />
     name必填。当前应用名称,用于注册中心计算应用间依赖关系,注意:消费者和提供者应用名不要一样

    关于枚举类的使用最佳实践:
    枚举值
      如果是完备集,可以用Enum,比如:ENABLE, DISABLE。
      如果是业务种类,**以后明显会有类型增加,不建议用Enum,可以用String代替。**
      如果是在返回值中用了Enum,并新增了Enum值,建议先升级服务消费方,这样服务提供方不会返回新值。
      如果是在传入参数中用了Enum,并新增了Enum值,建议先升级服务提供方,这样服务消费方不会传入新值。

  • 相关阅读:
    css的em是根据什么来写的
    向一个对象数组里面添加新的属性 + 将一个对象数组数据拿出来变成另一个对象
    微信里iphone后退不刷新问题解决方案
    进到页面后input输入框自动获取焦点
    jquery checkbox反复调用attr('checked', true/false)只有第一次生效
    js promise中如何取到[[PromiseValue]]
    js 取得当天0点 / 23:59:59 时间
    jQuery获取包括当前元素的HTML
    C++ 实现 STL 标准库和算法(二)template 编程和迭代器粗解 实验楼笔记
    我现在怎么写博客笔记?
  • 原文地址:https://www.cnblogs.com/exmyth/p/8758604.html
Copyright © 2020-2023  润新知