`

浅谈Dubbo服务框架

 
阅读更多

       先声明一下,文章是引用别人的,感觉写的很好,一定要保存下来,url链接:http://blog.sina.com.cn/s/blog_493a84550102vlie.html

      

 

       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无法监控和审计消息日志传输两方面的问题。

  • 大小: 23.4 KB
分享到:
评论

相关推荐

    dubbo服务框架高清视频

    dubbo 服务框架高清视频 内含zookeeper&Linux;&redis;... dubbo 服务框架高清视频 内含zookeeper&Linux;&redis;...

    taobao DUBBO服务框架1

    【标题】"淘宝DUBBO服务框架1"与【描述】"taobao DUBBO服务框架 还有2"一起揭示了本次讨论的核心——淘宝的DUBBO服务框架。DUBBO是阿里巴巴开源的一个高性能、轻量级的服务治理框架,主要用于实现分布式服务的调用与...

    Dubbo服务框架.zip

    Dubbo服务框架是一个由阿里巴巴开源的高性能Java RPC框架,它在阿里巴巴集团内部广泛使用,并且在开源社区中也获得了极大的关注。本资料包包含了Dubbo服务框架相关的面试题及答案,旨在帮助求职者或者开发者更好地...

    dubbo入门学习框架源码

    Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,已经成为Java世界中分布式服务的重要选择。本文将深入探讨Dubbo的核心概念、设计模式以及源码实现,旨在帮助读者理解其内在机制,提升在实际开发中的...

    Dubbo分布式框架案例

    Dubbo,作为阿里巴巴开源的一款高性能、轻量级的Java RPC框架,它致力于解决服务治理的问题,包括服务发现、服务调用、负载均衡等。本案例将探讨如何使用Dubbo构建一个分布式系统,并结合Zookeeper作为注册中心以及 ...

    Dubbo服务框架 v3.2.11.zip

    《Dubbo服务框架v3.2.11详解》 Dubbo是一款由阿里巴巴开源的高性能、轻量级的服务治理框架,旨在提供一个简单易用、高性能、可扩展的服务调用解决方案。本文将深入探讨Dubbo服务框架v3.2.11的核心特性、设计理念...

    Dubbo分布式服务框架

    Dubbo分布式服务框架

    Dubbo服务框架 v2.6.12.zip

    《Dubbo服务框架 v2.6.12.zip——深入解析与应用》 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,自2008年诞生以来,便在分布式系统领域赢得了广泛的关注和应用。本次我们关注的是其v2.6.12版本,...

    taobao DUBBO服务框架2

    taobao DUBBO服务框架 有1

    Dubbo服务框架 v2.7.22.zip

    Dubbo服务框架是阿里巴巴开源的一款高性能、轻量级的服务治理框架,主要应用于分布式系统的开发,尤其是在微服务架构中。版本v2.7.22是一个稳定版本,包含了多项优化和改进,旨在提升服务的稳定性和性能。这个压缩包...

    Dubbo服务框架 v3.1.10.zip

    Dubbo服务框架是阿里巴巴开源的一款高性能、轻量级的Java RPC框架,主要用于构建微服务架构。版本v3.1.10带来了许多增强特性和优化,使得它在现代分布式系统中的应用更加广泛和稳定。这个压缩包包含了Dubbo 3.1.10的...

    Dubbo服务框架.rar

    dubbo框架有什么用 把一个大的项目拆分成多个项目,由原来的一个项目处理工作,变为多个项目一同处理工作,提高工作效率 dubbo框架和传统框架有什么区别 传统框架,无论部署多少份代码,每单个请求,都必须经过...

    Dubbo服务器框架电子文档

    Dubbo是一个由阿里巴巴开源的高性能服务框架,它主要是为了解决分布式服务的调用问题。通过使用RPC(Remote Procedure Call,远程过程调用)技术,Dubbo使得应用可以方便地进行服务的输出和输入。Dubbo最大的特点是...

    Dubbo分布式服务框架入门2

    Dubbo是中国阿里巴巴开源的一款高性能、轻量级的Java分布式服务框架,它主要为了解决企业应用之间的服务调用问题,提供了服务注册、服务发现、负载均衡、容错处理等一系列完整的服务治理功能。在这个"Dubbo分布式...

    Dubbo服务框架面试专题及答案整理文档.zip

    《Dubbo服务框架面试专题及答案》文档是一个深入解析Dubbo服务框架的资源集合,它旨在帮助求职者或开发者充分准备与Dubbo相关的面试问题。Dubbo作为阿里巴巴开源的高性能、轻量级的服务治理框架,广泛应用于分布式...

    dubbo框架及dubbo环境搭建

    Dubbo 框架是一种分布式服务框架,旨在提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。 Dubbo 框架的核心部分包含远程通讯、集群容错和自动发现三个部分。 在 Dubbo 框架中,服务提供者和...

    Dubbo服务框架 v3.2.2

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring 框架无缝集成。 Dubbo主要核心部件: Remoting:网络通信框架,实现了sync-over-async和...

    Dubbo服务框架面试专题及答案整理文档.rar

    【Dubbo服务框架面试专题及答案整理文档】 在IT行业中,Java编程语言一直是企业级应用开发的首选,而Dubbo作为阿里巴巴开源的一款高性能、轻量级的服务框架,它在Java分布式系统中的应用广泛。这份“Dubbo服务框架...

    dubbo分布式框架学习资料(内含实例)

    Dubbo是中国阿里巴巴公司开源的一款高性能、轻量级...总的来说,Dubbo是一款强大的分布式服务框架,通过学习和实践提供的实例,你可以掌握其核心特性和应用场景,为构建高可用、高性能的企业级微服务架构打下坚实基础。

    Dubbo服务框架面试题及答案.zip

    《Dubbo服务框架面试题及答案》 在Java面试中,Dubbo作为一款高可用、高性能的分布式服务框架,常常成为考察的重点。本资料集合了关于Dubbo的常见面试问题和对应答案,帮助求职者更好地理解和掌握这一核心技术。 1...

Global site tag (gtag.js) - Google Analytics