谈Dubbo服务框架

标签: IT咨询 | 发表时间:2015-07-28 22:59 | 作者:人月神话
出处:http://blog.sina.com.cn/cmmi


Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。主要核心部件:

  • Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制.
  • RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
  • Registry: 服务目录框架用于服务的注册和服务事件发布和订阅

连通性说明

注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小;监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示。

服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销;服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销。
  
注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外;注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者;注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表;注册中心和监控中心都是可选的,服务消费者可以直连服务提供者。

健状性说明

监控中心宕掉不影响使用,只是丢失部分采样数据;数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务。

注册中心对等集群,任意一台宕掉后,将自动切换到另一台;注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯。服务提供者无状态,任意一台宕掉后,不影响使用;服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复。

伸缩性说明

注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心;服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者。

以上内容是Dubbo主页提供的一些简单介绍,对于Dubbo的详细架构分析和介绍网上也有专门的文章说明,在此不再详细描述,只是对Dubbo本身的一些架构思路和使用场景再做些简单总结。

对于Dubbo分布式服务框架可以看到,对于实现系统内的完全组件化独立开发相当有好处,在这个之前我们往往使用的方法是利用OSGI软总线方式来实现内部的组件化开发和独立部署。而Dubbo框架可以更加容易的实现这点,即将逻辑层的方法很容易暴露为远程可以调用的各种类型的服务。即组件完全独立部署,而组件之间的交互只能够通过服务代理层暴露出来的服务进行交互,而这些服务都在服务注册中心进行注册。

对于注册中心和监控中心,这里有一个高可靠性设计,即即使两者都宕机无法访问,也不会影响到服务的正常消费和调用,这个设计相当重要,直接降低了本身服务框架和业务系统组件之间的强耦合性。当然注册中心本身也有内置的基于zookeeper的分布式协调机制和机器本身的动态心跳检测。

Dubbo分布式服务框架同传统的ESB一个重点区别就是对于实际的消息流不会走在Dubbo上面,即前面我有文章谈到过的对于服务的调用基本上是两次调用模式。即第一次调用首先从注册中心获取到动态的服务调用地址,第二次调用即服务的提供端和消费端直接握手,以解决消息流不需要在dubbo上传递的问题。这样做的好处就是dubbo本身不会有太大的消息传输和性能压力,但是缺点就是dubbo无法对消息传输日志进行详细的审计,这个只有留个各个业务系统自己去完成。

由于是二次握手,因此很容易实现完全的一种分布式服务架构模式,而且这种分布式集群不需要借助任何的集群软件和负载均衡设备。这是Dubbo框架的另外一个重要优点,即在服务注册中心本身有一个请求分配机制,可以在获取服务访问地址的时候动态的根据各种分配策略将服务请求分配到不同的服务端提供地址上面。即将所有的服务提供端IP地址,提供服务地址都需要配置到服务注册中心,服务注册中心根据某种负载均衡算法进行服务请求的平均分配。由于本身服务的无状态性,因此也不需要有专门的服务状态和会话保持机制。

应用的心跳检测是一个重要内容,注意这里不仅仅是服务器本身的心跳检查,而可能是到服务是否可用的心跳检测,只有实现这个层面的心跳,服务注册和管理中心才可能在服务提供端无法访问的时候动态分配其它可访问的服务提供地址,形成一种高可用性架构模式。对于心跳检测现在常用的方法仍然是基于socket的长连接和状态监听机制来实现。但是对于tcp keepalive心跳检测机制最大的问题还是在于无法很好的检测服务本身是否可用的问题,这个问题得到解决才是根本。

注意在dubbo里面有两个重要的模块,一个是dubbo-cluster 集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡、容错、路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。另外一个是dubbo-registry 注册中心模块,基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。要注意到这两个模块对应的服务注册中心和服务监控中心对服务本身的实际调用和消息传输是完全解耦的,这也是dubbo本身实现高可用性和高可靠性的一个基础。

dubbo当前的实现机制在设计ESB类服务总线的时候很多思路也可以借鉴,即其对集群的实现思路,对监控中心和服务注册中心的实现思路。通过这种思路的实现可以将ESB服务总线彻底设计为一种全分布式高扩展性的分布式服务总线架构模式。这将同时解决到ESB总线本身的分布式集群扩展和传统dubbo无法监控和审计消息日志传输两方面的问题。

  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [dubbo 服务 框架] 推荐:

谈Dubbo服务框架

- - 人月神话的BLOG
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. 它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合). 从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色.

阿里巴巴Dubbo分布式服务框架已开源

- tangfl - ITeye论坛最新精华讨论帖
Serving services with invocations everyday, Dubbo becomes the key part of Alibaba's SOA solution and has been deployed to the whole alibaba.com family:.

Dubbo:来自于阿里巴巴的分布式服务框架

- - 标点符
Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo是一个阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式.

阿里巴巴分布式服务框架-Dubbo问与答

- - Arccode's blog
Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,每天为2000+ 个服务提供3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo自2011年开源后,已被许多非阿里系公司使用. 项目主页: http://dubbo.io/Home-zh.htm.

基于Dubbo框架构建分布式服务

- - 简单之美
有关Dubbo服务框架的简单使用,可以参考我的其他两篇文章(《基于Dubbo的Hessian协议实现远程调用》,《基于Dubbo的Hessian协议实现远程调用》,后面参考链接中已给出链接),这里主要围绕Dubbo分布式服务相关配置的使用来说明与实践. 首先,根据Dubbo文档,我们引用文档提供的一个架构图以及各组件关系说明,如下所示:.

微服务架构的基础框架选择:Spring Cloud还是Dubbo?

- - 程序猿DD
最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构. 近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的. 目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师、技术VP或者CTO在交流时,有些甚至还不知道该项目的存在.

RPC 服务框架 Dubbo 将正式得到官方维护与支持

- - 开源中国社区最新新闻
近日, Dubbo 项目官网更新了一则公告:. dubbo项目将正式得到官方维护与支持,我们期待这款优秀的开源项目在未来持续保持活力,引领开源服务框架  --Alibaba dubbo-team. 在项目 GitHub 主页的 issue 中,也有阿里巴巴的工程师确认了这一消息. 看来,Dubbo 确实重新开始得到官方的维护了.

分布式框架Dubbo

- - Linux - 操作系统 - ITeye博客
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的. 现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应. 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡.

dubbo服务降级实现dubbo-plus/circuitbreaker at master · dubboclub/dubbo-plus · GitHub

- -
向注册中心写入动态配置覆盖规则:(通过由监控中心或治理中心的页面完成). 表示消费方对该服务的方法调用都直接返回null值,不发起远程调用. 屏蔽不重要服务不可用时对调用方的影响. 表示消费方对该服务的方法调用在失败后,再返回null值,不抛异常. 容忍不重要服务不稳定时对调用方的影响. Dubbo支持服务降级,并且支持当服务出现异常的时候进行服务降级处理,但是存在一下几个缺陷.

分布式服务框架选型:面对 Dubbo,阿里巴巴为什么选择了 HSF?

- - IT瘾-tuicool
阿里巴巴集团内部使用的分布式服务框架 HSF(High Speed Framework,也有人戏称“好舒服”)已经被很多技术爱好者所熟知,目前已经支撑着近 2000 多个应用的运行. 其对应早期的开源项目 Dubbo(因为某些原因,Dubbo 项目在 2012 年年底,阿里巴巴就停止了对此开源项目的更新),则更是在互联网领域有着非常高的知名度和广泛的使用.