第1章 Dubbo基础
1.1 初识Dubbo
整体来说,一个公司业务系统的演进流程基本上都是从单体应用到多体应用。业务系统为单体应用时,不同业务模块的相互调用直接在本地JVM进程内就可以完成;而变为多个应用时,相互之间进行通信的方式就不是简单地进行本地调用了,因为不同业务模块部署到了不同的JVM进程里,更常见的情况是部署到了不同的机器中,这时候,一个高效、稳定的RPC远程调用框架就变得非常重要。
Dubbo是阿里巴巴开发的一个开源的高性能的RPC调用框架,是一个致力于提供高性能和透明化的RPC远程调用服务解决方案。作为阿里巴巴SOA服务化治理方案的核心框架,目前它已从Apache孵化器项目毕业,其前景可谓无限光明。
本节概要介绍使用Dubbo构建的分布式系统架构中各个组件服务的作用以及相互关系,其中各个组件之间的关系如图1.1所示。
图1.1是Dubbo的架构图,其中:
图1.1
· Provider为服务提供者集群,服务提供者负责暴露提供的服务,并将服务注册到服务注册中心。
· Consumer为服务消费者集群,服务消费者通过RPC远程调用服务提供者提供的服务。
· Registry负责服务注册与发现。
· Monitor为监控中心,统计服务的调用次数和调用时间。
以上各个组件的调用关系如下:
· 服务提供方在启动时会将自己提供的服务注册到服务注册中心。
· 服务消费方在启动时会去服务注册中心订阅自己需要的服务的地址列表,然后服务注册中心异步把消费方需要的服务接口的提供者的地址列表返回给服务消费方,服务消费方根据路由规则和设置的负载均衡算法选择一个服务提供者IP进行调用。
· 监控平台主要用来统计服务的调用次数和调用耗时,即服务消费者和提供者在内存中累计调用服务的次数和耗时,并每分钟定时发送一次统计数据到监控中心,监控中心则使用数据绘制图表来显示。监控平台不是分布式系统必需的,但是这些数据有助于系统的运维和调优。服务提供者和消费者可以直接配置监控平台的地址,也可以通过服务注册中心获取。