dubbo学习笔记

2019-05-10  本文已影响0人  zhglance

1.简述

dubbo作为阿里巴巴提供的分布式rpc和微服务框架,提供了基于接口的远程调用,容错和负载均衡,服务注册与发现功能。

dubbo演进路线:

dubbo演进路线.png

dubbo框架:

dubbo框架(图片来之官网).jpg

dubbo服务治理:

dubbo服务治理(图片来之官网).jpg dubbo-framework(图片来之官网).jpg dubbo-extension(图片来之官网).jpg

各层功能说明:
1.Service层:为具体业务提供服务提供者和服务消费者的实现类和接口类;
2.Config层:提供Dubbo的配置服务,这块主要有Spring解析服务提供者和服务消费者的配置信息;
3.Proxy代理层:使用SPI(Service Provider Interface)机制,即JDK内置的服务提供发现机制,实现动态替换接口,这样在运行时动态地给接口添加一个实现类,动态选取不同的配置类;
4.Register注册层:负责dubbo服务的注册和发现,并且对服务进行监听;
5.Cluster集群层:负责服务的路由,加载和失败重试;
6.Protocol协议层:负责协议的转换和过滤;
7.Exchange交换层:主要封装了请求和响应,同步转异步;
8.Transport传输层:负责网络传输,主要使用Netty,Mina等,实现真正的数据传输;
9.Serialize序列化层:根据不同的协议对数据进行序列化。

Service服务提供:


dubbo_rpc_export(图片来之官网).jpg

注册的url格式:
dubbo://172.17.112.123:28002/com.lance.service.MyService?accepts=1000&anyhost=true&application=oic-dubbo-provider&bind.ip=10.8.0.28&bind.port=12000&buffer=8192&charset=UTF-8&methods=add,remove,find,serach&default.service.filter=dubboCallDetailFilter&dubbo=2.6.1&generic=false&interface=com.lance.service.MyService&revision=1.0.0&serialization=hessian2&side=provider&threadpool=fixed&threads=10&timeout=600&version=1.0.0
url地址主要包含了版本号version,接口名MyService,方法列表methods,序列化方法serialization,过期时间timeout等
ZookeeperRegistry.java类调用doRegister(URL url)

Dubbo在Zookeeper上注册的节点目录


dubbo__url__.jpg

Service服务消费


dubbo_rpc_refer(图片来之官网).jpg

Dubbo调用的重试策略;

<!--服务调用失败后,重试其他服务节点,适用于幂等性接口,如读,不适合写接口-->
1. <dubbo:registry cluster ="failover"> 

<!-- 服务只调用一次,失败立即报错,适用于非幂等性接口,如写操作-->
2. <dubbo:registry cluster ="failfast"> 

<!-- 失败安全,出现异常是直接忽略,通常用于不影响业务侧场景,如日志等-->
3. <dubbo:registry cluster ="failsafe"> 

<!-- 失败自动恢复,后台记录失败请求,然后定时重发,通常适用于消息通知-->
4. <dubbo:registry cluster ="failback"> 


<!-- 并行调用多个服务节点,成功一个即返回,通常用于实时性操作高的读操作-->
5. <dubbo:registry cluster ="forking"> 


上一篇下一篇

猜你喜欢

热点阅读