当涉足后端开发的时候,了解远程过程调用(RPC)框架是至关重要的。RPC允许不同的应用程序在分布式环境中进行通信,使得各种服务可以相互调用,从而构建出高效、可扩展的系统。在本文中,我将分享我在学习后端RPC框架分层设计方面的学习笔记。
1. 理解RPC框架的基本概念
RPC(Remote Procedure Call)远程函数调用,RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制,让使用者不必显式的区分本地调用和远程调用。
2. 优点
- 1、分布式设计
- 2、部署灵活
- 3、解构服务
- 4、扩展性强
3. 有哪些RPC框架?
- Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。
- Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。
- Tars:腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。
- Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,提供了丰富的生态组件。
- gRPC:Google 于 2015 年对外开源的跨语言 RPC 框架,支持多种语言。
- Thrift:最初是由 Facebook 开发的内部系统跨语言的 RPC 框架,2007 年贡献给了 Apache 基金,成为Apache 开源项目之一,支持多种语言。 RPC框架的分层设计
4. 基本概念
- IDL(Interface description language)文件:IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信
- 生成代码:通过编译工具把IDL文件转换成语言对应的静态库
- 编解码:从内存中表示到字节序列的转换称为编码,反之为解码,也常叫做序列化和反序列化
- 通信协议:规范了数据在网络中的传输内容和格式。除必须的请求/响应数据外,通常还会包含额外的元数据
- 网络通信:通常基于成熟的网络库走TCP/UDP传输
结论
后端RPC框架的分层设计在分布式系统的开发中具有重要意义。理解各个层级的职责和相互关系,遵循设计原则和注意事项,可以帮助构建高效、可扩展、稳定的分布式系统。通过不断学习和实践,我们可以更好地掌握这一领域的知识,为构建优秀的后端系统奠定坚实的基础。