前言:
今年三月份换了一份工作,在新公司使用阿里开源的Dubbo作为RPC服务框架,其使用方法和原VIP的Venus–OSP框架略有不同,在看过框架介绍后发现,其原理都是相似而共通的,现简记如下。
参考文档:阿里巴巴Duboo官网
一 、知识点
- SOA(Service Oriented Architecture):面向服务的架构。
- 由 服务治理、服务注册和发现、RPC、监控中心、调度中心以及服务路由、负载均衡等功能模块组成的资源调度和治理中心。
二、 RPC的演进
- 框架演进:ORM–>MVC–>RPC–>SOA
- 架构演进:单一应用架构–>垂直应用架构—>分布式服务架构–>流动计算架构
- 单一应用架构
- 网站流量小的时候,将所有功能集中到单一应用以减少成本。性能瓶颈在于 ORM框架。
- 垂直应用架构
- 网站流量增大,横向扩展带来的效益越来越低,将应用拆分为互不相干的几个应用以提升效率。性能瓶颈在于MVC框架。
- 分布式服务架构
- 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。 此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
- 弹性计算架构
- 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。 此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
三、 架构简介
架构图
节点角色
- Provider:服务提供方,在启动时向注册中心注册服务;
- Consumer:服务消费方,向注册中心请求服务提供方列表,在本地做负载均衡调用服务;
- Register:注册中心,提供服务注册与发现(一般由Zookeeper担当),通过长连接与Provider和Consumer保持连接,负责监控Provider的上下线并及时通知Consumer;
- Monitor:监控中心,负责统计服务的性能数据;
- Container:服务运行容器。
调用关系
- “0.start”:服务运行容器启动、加载、运行服务提供方,一般由Spring容器启动Jar运行;
- “1.register”: 服务提供方在启动时,向注册中心注册自己的IP、服务接口等信息;
- “2.subscribe”: 服务消费方向注册中心订阅自己感兴趣的服务提供方;
- “3.notify”: 注册中心在服务提供方发生变更时将基于长连接向消费方推送消息;
- “4.invoke”: 服务消费方在本地对服务列表做软负载均衡算法,选择最优的服务提供方进行RPC调用;
- “5.count”: 消费方和提供方向监控中心 定时异步推送服务调用次