dubbo最近提交到了apache,成为了apache的孵化项目,又开始活跃起来了。就官方在git上面的说明文档和其他资料,学习总结以下dubbo的一些知识点。

  

1.The dubbo protocol is one of many protocols the framework supports. It is built on top of the Java NIO non-blocking feature and it’s the default protocol used.

dubbo协议是众多框架支持的协议之一,它基于JAVA NIO无阻塞特性,并且这是默认使用协议。

2.The framework supports multiple protocols, including dubbo, RMI, hessian, HTTP, web service, thrift, memcached and redis. Most of the protocols looks familiar, except for dubbo。

框架支持多种协议,包括dubbo、RMI、hessian、http、web service、thrift、memcached和redis。大多数的协议都是差不多的,除了dubbo。

3.The dubbo protocol keeps a persistent connection between providers and consumers. The long connection and NIO non-blocking network communication result in a fairly great performance while transmitting small-scale data packets (<100K).

dubbo协议在服务提供者和消费者之间保持着一个持久化的连接。长连接和NIO无阻塞连接在小数据包(小于100KB)的网络通信中表现出相当高的性能。

4.Currently, the framework supports a few load-balancing strategies:random、round-robin、least-active、consistent-hash.

当前框架支持以下几种负载均衡策略:随机(按照权重设置随机概率)、轮询(按公约后的权重设置轮询比率)、最小活跃(相同活跃是随机,慢机器收到更少的请求,最不活跃优先)、一致性哈希(相同参数的请求总数发送到同一提供者,当提供者挂掉,分摊到其他提供者)。

5.Several fault tolerance strategies are supported in Dubbo, including:fail-over、fail-fast、fail-safe、fail-back、
forking.In the case of fail-over, when one provider fails, the consumer can try with some other service providers in the cluster.

dubbo支持几种容错策略:失败自动切换(发现失败,访问其他服务器)、快速失败(只调用一次,失败立即报错)、错误安全(出现异常直接忽略)、失败自动恢复(后台记录失败请求,定时重发)、并行调用(并行访问多台服务器,只要一个成功则返回)。在集群环境中,当使用错误忽略策略时,在一个服务提供者访问失败,服务消费者就会寻找其他相同的服务提供者。
补充:缺省为failover。还有一个broadcast,广播调用所有提供者,逐个调用,任意一个出错则报错。

6. dubbo是为解决哪些实际开发中遇到的问题的?
答:①当服务数量越来越多时,使用软负载均衡,减少F5硬件成本。②服务依赖关系复杂时,描述每个服务之间的关系。③服务调用量越来越大时,计算所需的服务器支撑数量。

7. 配置覆盖关系
以 timeout 为例,显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似:
方法级优先,接口级次之,全局配置再次之。
如果级别一样,则消费方优先,提供方次之。

8. 结果缓存

用于加速热门数据的访问速度,有三种缓存类型:
lru(least-recently-used):基于最近最少使用原则删除多余缓存,保持最热数据被缓存。
threadlocal:当前线程缓存。
jcache: 与JSR107集成,可以桥接各种缓存。

 

 

相关参考资料:

1.http://www.baeldung.com/dubbo 

2. 

3. http://dubbo.apache.org/books