Dubbo框架的应用

一、知识储备

1、MVC架构

这里就不详细介绍了。本博客的实例是用的是SpringMvc+Spring+Mybatis(Spring boot +Mybatis)。

2、MQ(消息队列)

查看博客:http://blog.****.net/shaobingj126/article/details/50585035
http://blog.****.net/heyutao007/article/details/50131089

3、RPC框架

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
http://blog.****.net/mindfloating/article/details/39474123
http://blog.****.net/l0605020112/article/details/16114237

二、Dubbo详解

2.1Dubbo是什么?
Dubbo是轻量级的分布式RPC通信框架。
2.2Dubbo解决了什么问题?(服务治理)

  1. 当服务越来越多时,服务 URL 配置管理变得非常困难,F5 硬件负载均衡器的单点压力也越来越大。
  2. 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
  3. 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
    为了解决上述问题从以下几个方面考虑:
    2.3Dubbo是怎么实现的?

Dubbo框架的应用

上图是Dubbo的具体流程图,为了更好的结合实际情况分析应用,可以参照下面的了解来分析。

Dubbo框架的应用
从上图可以看出Dubbo框架具有很好的横向扩展和灵活性。
Dubbo框架的应用
Dubbo框架的应用
连通性

  • 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小

  • 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示

  • 服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销

  • 服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销

  • 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外

  • 注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者

  • 注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表

  • 注册中心和监控中心都是可选的,服务消费者可以直连服务提供者

健状性

  • 监控中心宕掉不影响使用,只是丢失部分采样数据
  • 数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
  • 注册中心对等集群,任意一台宕掉后,将自动切换到另一台 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
  • 服务提供者无状态,任意一台宕掉后,不影响使用
  • 服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复

伸缩性

  • 注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心
  • 服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者
    Dubbo框架的应用
    Dubbo框架的应用
    这里就不详细介绍Dubbo使用了详细的使用情况参照官网:
    https://dubbo.gitbooks.io/dubbo-user-book/preface/architecture.html
    本博客用springMVC+Spring+Mybatis+Redis具体代码请看项目: