1.简单介绍《深入理解Apache Dubbo与实战》
内容简介:
这本书书首先介绍 Dubbo 的简史、后续的规划和整体架构;接着介绍 Dubbo 环境配置,并基于 Dubbo 开发第一款应用程序;然后介绍 Dubbo 内置的常用注册中心的实现原理,Dubbo 扩展点加载的原理和实现, Dubbo 的启动、服务暴露、服务消费和优雅停机的机制,Dubbo 中 RPC 协议细节、编解码和服务调用实现原理,Dubbo 集群容错、路由和负载均衡机制,Dubbo 的扩展点相关知识,Dubbo 高级特性的实现和原理,Dubbo 常用的 Filter 的实现原理,Dubbo 中新增 etcd3 注册中心 的实战内容和 Dubbo 服务治理平台的相关知识;最后介绍 Dubbo 未来生态和Dubbo Mesh 的相关知识。
2.架构的演进
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。
分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
3.RPC(远程过程调用)介绍
RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。
RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有:
- 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。
- 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。
- 通信框架:MINA 和 Netty。
完整的 RPC 框架
在一个典型 RPC 的使用场景中,包含了服务发现、负载、容错、网络传输、序列化等组件,其中“RPC 协议”就指明了程序如何进行网络传输和序列化。
Dubbo 的简单设计架构图
Dubbo 的完整设计架构图 ,分层清晰,功能复杂:
RPC 核心功能
RPC 的核心功能是就是上图中的”RPC 协议”部分:
一个 RPC 的核心功能主要有 5 个部分组成,分别是:客户端、客户端 Stub、网络传输模块、服务端 Stub、服务端等。
核心 RPC 框架的重要组成:
- 客户端(Client):服务调用方。
- 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数数据信息打包成网络消息,再通过网络传输发送给服务端。
- 服务端存根(Server Stub):接收客户端发送过来的请求消息并进行解包,然后再调用本地服务进行处理。
- 服务端(Server):服务的真正提供者。
- Network Service:底层传输,可以是 TCP 或 HTTP。