1.dubbo初体验

2018-10-27  本文已影响0人  小manong

一、背景

二、需求

dubbo服务治理

三、dubbo架构

1.相关的节点说明

Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器

2.调用关系说明服务容器负责启动,加载,运行服务提供者。

(1)服务提供者在启动时,向注册中心注册自己提供的服务。
(2)服务消费者在启动时,向注册中心订阅自己所需的服务。
(3)注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
(4)服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
(5)服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

3.dubbo的特点

(1)连通性

(2)健壮性

(3)伸缩性

(4)升级性
当服务集群规模进一步扩大,带动IT治理结构进一步升级,需要实现动态部署,进行流动计算,现有分布式服务架构不会带来阻力。下图是未来可能的一种架构:


服务升级架构图
节点 角色说明
Deployer 自动部署服务的本地代理
Repository 仓库用于存储服务应用发布包
Scheduler 调度中心基于访问压力自动增减服务提供者
Admin 统一管理控制台
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心

4.总结dubbo核心功能

(1)远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
(2)集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
(3) 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

5.dubbo优势

(1)透明化的远程方法调用,调用本地方法一样,只是需要简单的配置没有任何的api侵入,性能相对http传送方式要好。
(2)软负载均衡及容错机制,可在内网内替代F5等硬件负载均衡,降低成本,减少单点,实现了高可用机制
(3)服务自动注册和发现及服务监控
(4)可以与spring结合使用

6、dubbo劣势

(1)Dubbo实现了服务治理的基础,其他组件需要另外整合以实现对应的功能,比如:
分布式配置:可以使用淘宝的diamond、百度的disconf来实现分布式配置管理,携程apollo等。
服务跟踪:可以使用京东开源的Hydra
批量任务:可以使用当当开源的Elastic-Job
(2)版本Dubbo升级比较困难,需要考虑因素多。服务提供方与调用方接口依赖方式太强:调用方对提供方的抽象接口存在强依赖关系,需要严格的管理版本依赖,才不会出现服务方与调用方的不一致导致应用无法编译成功等一系列问题;
(3)服务对平台敏感,难以简单复用:通常我们在提供对外服务时,都会以REST的方式提供出去,这样可以实现跨平台的特点。在Dubbo中我们要提供REST接口时,不得不实现一层代理,用来将RPC接口转换成REST接口进行对外发布。所以当当网在dubbox(基于Dubbo的开源扩展)中增加了对REST支持。


参考:
官方文档
微服务架构的基础框架选择:Spring Cloud还是Dubbo?

上一篇下一篇

猜你喜欢

热点阅读