1.分布式基础理论
1.1.分布式系统定义
分布式系统是一组独立计算机的集合,这组计算机集合对于用户来说就像单个系统似的。
集合中的机器一般具有通用的物理和逻辑资源,可以动态的分配任务,通过网络实现信息交换。
1.2.应用演进历程
-
单一应用架构 当网站流量很小时,以单个应用的形式,将所有功能部署在一块,减少部署、通信成本。
-
垂直应用架构 当网站流量逐渐增大,单一应用增加机器提升的加速度越来越小,成本越来越高。这时提高系统效率的方法之一是将应用拆分成多个子应用。
-
分布式服务架构 当垂直应用越来越多,应用之间交互日益频繁,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
-
流动计算框架 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
2.Dubbo
2.1.简介
Dubbo是一款微服务开发框架,它提供了RPC通信和服务治理两大核心功能。Dubbo致力于提供高性能和透明化的RPC服务解决方案,提供服务发现、负载均衡等丰富的服务治理能力。现在Dubbo框架已由Apache基金会负责维护与更新,使用者们不用像以前那样担心Dubbo框架突然不再维护与更新。
2.2.架构
上图为Dubbo架构图,相关组件介绍:
- Provider: 服务提供者集群,服务提供者负责暴露其提供的服务,并将服务注册到注册中心。
- Consumer:服务消费者集群,服务消费者从注册中心获取到服务提供者的信息,通过RPC远程调用服务提供者提供的服务。
- Registry: 负责服务注册与发现的注册中心。
- Minotor:统计服务的调用次数和调用时间的监控中心。
- Container: 服务运行的容器。
组件间的调用关系:
- 服务提供者启动时,根据配置信息,将需要暴露的服务注册到注册中心。
- 服务消费者启动时,根据配置信息,从注册中心获取服务提供者的地址信息。后续如果服务提供者信息有变更,注册中心会异步地将变更信息推送给服务消费者。服务消费者会根据配置的负载均衡策略和路由规则选取多个服务提供者中的一个,进行服务调用。
- 监控平台负责统计服务的调用次数和耗时,服务提供者和消费者在内存中累计调用服务的次数和耗时,每分钟定时发送一次统计数据到监控中心。