dubbo接口开发文档

<dubbo:protocol 前端

  • 事件处理线程说明
  • 若是事件处理的逻辑能迅速完成,而且不会发起新的IO请求,好比只是在内存中记个标识,则直接在IO线程上处理更快,由于减小了线程池调度。
  • 但若是事件处理逻辑较慢,或者须要发起新的IO请求,好比须要查询数据库,则必须派发到线程池,不然IO线程阻塞,将致使不能接收其它请求。
  • 若是用IO线程处理事件,又在事件处理过程当中发起新的IO请求,好比在链接事件中发起登陆请求,会报“可能引起死锁”异常,但不会真死锁。

<dubbo:registryjava

有时候但愿人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式。git

<dubbo:registry address="10.20.141.150:9090" dynamic="false" />github

 

 

不一样服务在性能上适用不一样协议进行传输,好比大数据用短链接协议,小数据大并发用长链接协议。数据库

 

异步调用缓存

基于NIO的非阻塞实现并行调用,客户端不须要启动多线程便可完成并行调用多个远程服务,相对多线程开销较小。多线程

<dubbo:reference id="fooService" interface="com.alibaba.foo.FooService">并发

      <dubbo:method name="findFoo" async="true" />异步

</dubbo:reference>async

<dubbo:reference id="barService" interface="com.alibaba.bar.BarService">

      <dubbo:method name="findBar" async="true" />

</dubbo:reference>

 

 

 

应用间声明依赖强度,哪些功能强依赖,哪些弱依赖,而后基于依赖强度,计算出影响面,并按期测试复查,增强关键路径上的服务的优化和容错,清理不应在关键路径上的服务。

提供容错Mock数据,Mock数据也应能够在注册中心在运行时动态下发,当某服务不可用时,用Mock数据代替,能够减小故障的发生,好比某验权服务,当验权服务所有挂掉后,直接返回false表示没有权限,并打印Error日志报警。

另外,前端的页面也应采用Portal进行降级,当该Portal获取不到数据时,直接隐藏,或替换为其它模块展现,并提供功能开关,可人工干预是否展现,或限制多少流量能够展现。

结果缓存

(+) (#)

 

结果缓存,用于加速热门数据的访问速度,Dubbo提供声明式缓存,以减小用户加缓存的工做量。

 

2.1.0以上版本支持

     

示例代码:https://github.com/alibaba/dubbo/tree/master/dubbo-test/dubbo-test-examples/src/main/java/com/alibaba/dubbo/examples/cache

  • lru 基于最近最少使用原则删除多余缓存,保持最热的数据被缓存。
  • threadlocal 当前线程缓存,好比一个页面渲染,用到不少portal,每一个portal都要去查用户信息,经过线程缓存,能够减小这种多余访问。
相关文章
相关标签/搜索