dubbo简单介绍

Posted 伪文艺的tomato

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo简单介绍相关的知识,希望对你有一定的参考价值。

- 1、dubbo应用场景

本文参考了dubbo官方文档
http://dubbo.io/books/dubbo-user-book/

1、当服务越来越多时,服务 URL 配置管理变得非常困难
2、服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动
3、服务调用量越来越大,需要多少机器,什么时间加

1dubbo monitor 可以统计服务每天的调用量,响应时间
2dubbo admin可以动态调整权重,直到一台响应时间达到阀值,再乘以服务数量,可以推算出总的容量

dubbo采用全spring配置,配置简单

- 2、dubbo提供了几种负载均衡策略

random 按权重设置随机概率。缺省配置
同一个截面碰撞率高,量越大分布越均匀

roundRobin 轮询
如果某一台处理慢,容易请求堆积

leastActive 最少活跃调用数,相同数随机

consistentHash 一致性哈希,相同参数发到同一机器

现在公司的工程采用的是roudRobin,因为只有两个服务

- 3、多注册中心

支持zookeeper,redis,Multicast ,simple。推荐zookeeper,比较稳定

http://dubbo.io/books/dubbo-user-book/references/registry/introduction.html

- 4、多协议

dubbo协议 ,单一长连接和NIO通讯,适合小数据量大并发,消费者数量大于服务提供者,不适合传大文件,例如视频,图片

rmi协议

阻塞式短连接和JDK标准序列化方式,适合传入传出参数数据部大小混合,消费者和提供者数量差不多,可传文件,常规远程服务方法调用

Hessian协议,底层采用http通讯,servlet暴露服务,dubbo缺省内嵌jetty作为服务器实现。可与原生的hession服务相互操作
适合页面传输,文件传输,提供者比消费者多,传文件,提供者压力大,或与原生hession服务相互操作

http协议
适合提供者比消费者多,可用浏览器查看,可用表单或url传入参数,不支持传文件。同时给应用程序和浏览器的js使用

webservice协议
适合与原生webservice服务互操作

thrift协议,对thrift原生协议的扩展

memcached协议
基于memcached实现的RPC协议

redis协议
基于redis实现的RPC协议

http://dubbo.io/books/dubbo-user-book/references/protocol/introduction.html

- 5、集群容错

提供了多种容错方案,缺省为 failover 重试

Failover Cluster 自动重试一般适用于读操作,可以设置重试次数

Failfast Cluster 快速失败一般适用于写操作

还有 Forking Cluster 并行调用多个,只要一个成功就返回,可以设置并发数,用于实时性较高的操作,目前没有用到

等其他容错方案,参见dubbo文档

http://dubbo.io/books/dubbo-user-book/demos/fault-tolerent-strategy.html#

- 6、dubbo超时机制

超时机制是针对客户端来说的,客户端访问采用的NIO,调用服务端后返回一个ResponseFuture,然后不断轮询结果。

设置优先级为:

客户端方法级>客户端接口级>客户端全局>服务端方法级>服务端接口级>服务端全局

设置可以在客户端设置,也可以在服务端设置,一般推荐在服务端设置。因为服务端提供的服务大概是多久可以返回结果,一般服务端自己比较清楚。从这个角度来说,服务端设置比较清楚

引用https://www.cnblogs.com/ASPNET2008/p/7292472.html


以上是关于dubbo简单介绍的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo--简单介绍

Dubbo原理解析-Dubbo内核实现之SPI简单介绍

Dubbo协议介绍

1. Dubbo原理解析-Dubbo内核实现之SPI简单介绍 (转)

dubbo基础dubbo学习过程使用经验分享及实现原理简单介绍

Dubbo内核实现之SPI简单介绍