一: Dubbo 介绍
Dubbo 是阿里巴巴公司开源的一个高性能优秀的分布式服务框架,使得应用可通过高性能的 RPC(远程过程调用) 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。Dubbo 框架,是基于Spring容器运行的 。
Dubbo是一款高性能、轻量级的开源Java RPC(Java远程过程调用协议)框架,它提供了三大核心能力:
面向接口的远程方法调用,
智能容错和负载均衡,
以及服务自动注册和发现。
Apache Dubbo
http://dubbo.apache.org/
阿里巴巴已经将 dubbo 框架捐献给了 Apache 软件基金会
二:单体架构
单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。其优点:项目易于管理、部署简单。缺点:测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难
三:SOA 架构即面向服务架构(Service-Oriented Architecture)
面向服务的架构(SOA)是一个组件模型,它将应用程序拆分成不同功能服务单元,通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
四:RPC 远程过程调用协议 (Remote Procedure Call Protocol)
远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务(云服务),封装了tcp,而不需要了解底层网络技术的协议(TCP)。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为通信程序之间携带信息数据。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层。RPC 使得开发包括网络分布式多程序在内的应用程序更加容易。
五:Dubbo 框架结构
- 0 start: 启动 Spring 容器时,自动启动 Dubbo 的 Provider
- 1 register: Dubbo 的 Provider 在启动后自动会去注册中心注册内容.注册的内容包括:
- 2 subscribe: 订阅.当 Consumer 启动时,自动去 Registry 获取到所已注册的服务的信息.
-
3 notify: 通知.当 Provider 的信息发生变化时, 自动由 Registry 向 Consumer 推送通知.
-
4 invoke: 调用. Consumer 调用 Provider 中方法
-
4.1 同步请求.消耗一定性能.但是必须是同步请求,因为需要接收调用方法后的结果.
-
5 count:次数. 每隔 1 分钟,provoider 和 consumer 自动向 Monitor 发送访问次数.Monitor进行统计.
1、Provider:暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方
2、Registry:服务注册与发现的注册中心。 Monitor: 统计服务的调用次数和调用时间的监控中心。
3、Container: 服务运行容器
六:Dubbo的调用关系
- 服务容器(Spring容器)负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册(上传)自己提供的服务。
- 服务消费者在启动时,向注册中心订阅(获取)自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
七:Dubbo 支持的协议
优点:
采用 NIO 复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用)
缺点:
大文件上传时,可能出现问题(不使用 Dubbo 文件上传)
八:Dubbo 支持的注册中心
Zookeeper(官方推荐)
优点:支持分布式.很多周边产品.
缺点:受限于 Zookeeper 软件的稳定性.Zookeeper 专门分布式辅助软件,稳定较优