当前位置: 首页 > news >正文

RPC学习笔记一

什么是RPC

RPC(Remote Procedure Call,远程过程调用)是一种用于实现分布式系统中不同计算机或进程之间进行通信和调用的技术和模式。

在传统的过程调用中,当一个程序需要调用另一个程序的函数或方法时,通常是在同一台计算机上进行。而在分布式系统中,不同的计算机或进程可能分布在不同的物理位置上,RPC提供了一种透明的机制,使得在远程计算机上调用函数或方法就像在本地调用一样简单。

RPC的基本原理是,客户端程序发起一个函数调用请求,然后通过网络将请求发送到远程的服务端程序。服务端接收到请求后,执行相应的函数或方法,并将结果返回给客户端。这个过程对于客户端来说是透明的,就好像调用本地函数一样,无需关心底层的网络通信细节。
在这里插入图片描述
RPC过程

client 调用远程方法-> request序列化 -> 协议编码 -> 网络传输-> 服务端 -> 反序列化request ->
调用本地方法得到response -> 序列化 ->编码->……


Dubbo(现称 Apache Dubbo)是一个开源的高性能跨语言RPC框架,由阿里巴巴开发并于2011年开源。它旨在简化分布式系统的开发,提供高性能和可扩展性,并支持多种编程语言。

以下是 Dubbo 的一些主要特性:

  • 高性能:Dubbo 在设计上注重性能,并采用了多种优化策略,如基于 Netty 的 NIO 异步通信、高效的序列化机制和请求响应模式等,以提供低延迟和高吞吐量的 RPC 调用。

  • 服务治理:Dubbo 提供了丰富的服务治理功能,包括服务注册与发现、负载均衡、容错机制、路由策略、动态配置等。这些功能使得开发者能够更好地管理和控制分布式系统中的服务。

  • 跨语言支持:Dubbo 支持多种编程语言,包括 Java、Python、Node.js 等,在不同语言之间提供了无缝的集成和调用。

  • 高度可扩展:Dubbo 提供了可扩展的体系架构,允许开发者通过扩展点机制来自定义和扩展各种功能,以满足特定的业务需求。

  • 配置中心:Dubbo 提供了配置中心,可以集中管理和配置分布式系统中的服务配置,支持实时推送和动态更新配置。

  • 监控和管理:Dubbo 提供了丰富的监控和管理工具,包括服务调用监控、性能指标统计、服务治理控制台等,帮助开发者实时监控和管理分布式系统。


Lombok是一个流行的Java库,旨在通过提供注解来自动生成代码,从而减少Java应用程序中的样板代码。

以下是Lombok的一些主要功能:

  • 自动生成Getter和Setter:使用@Getter和@Setter注解,Lombok可以自动为类的字段生成对应的Getter和Setter方法。

  • 自动生成构造函数:使用@NoArgsConstructor、@AllArgsConstructor和@RequiredArgsConstructor等注解,Lombok可以根据字段自动生成无参构造函数、全参构造函数和指定字段的构造函数。

  • 自动生成toString方法:使用@ToString注解,Lombok可以自动生成类的toString方法,包括类的所有字段。

  • 自动生成Equals和HashCode方法:使用@EqualsAndHashCode注解,Lombok可以自动生成类的equals和hashCode方法,根据指定的字段进行比较。

  • 自动生成日志记录:使用@Slf4j或其他相关日志注解,Lombok可以自动生成日志记录器(Logger)。

  • 自动化异常抛出:使用@SneakyThrows注解,Lombok可以自动为方法抛出异常。

  • 链式调用:使用@Builder注解,Lombok可以自动生成构建器模式的代码,实现链式调用。

http://www.lryc.cn/news/320691.html

相关文章:

  • 计算机设计大赛 题目:基于深度学习的中文对话问答机器人
  • LabVIEW飞行器螺旋桨性能测试与数据监控
  • 数字电子技术实验(九)
  • Android 开发环境搭建(Android Studio 安装图文详细教程)
  • 解决方案:使用Vscode运行命令时,.出现 __vsc_prompt_cmd_original: command not found
  • SinoDB数据库运行分析
  • OkHttp
  • uni-app 上传图片无反应 chooseImage失效
  • 学习Java十一天总结
  • 【光伏监控系统的相关产品有哪些】Acrel-1000DP分布式光伏监控系统
  • [Linux]互斥锁(什么是锁,为什么需要锁,怎么使用锁(接口),演示代码)
  • Web基础06-AJAX,Axios,JSON数据
  • Java 文件序列化和反序列化
  • NETLINK_ROUTE 与 NETLINK_SOCK_DIAG 的区别与用法
  • docker yocto vscode
  • 使用ansible剧本进行lvm分盘
  • 【排序】快速排序
  • Python大数据实践:selenium爬取京东评论数据
  • 信息系统项目管理师019:存储和数据库(2信息技术发展—2.1信息技术及其发展—2.1.3存储和数据库)
  • Python基础(六)之数值类型元组
  • Chrome历史版本下载地址:Google Chrome Older Versions Download (Windows, Linux Mac)
  • ROS2纯跟踪实现(C++)
  • uniapp微信小程序随机生成canvas-id报错?
  • 爬虫 Day2
  • 达梦数据库SQL
  • python教程——把视频转成gif
  • 深入浅出Go的`encoding/xml`库:实战开发指南
  • 深度学习之扩散模型(Diffusion model)
  • Tomcat Session ID---会话保持
  • Session会话绑定