package com.thtf.zwdsj.fangjia.rpc; import org.apache.ws.commons.util.NamespaceContextImpl; import org.apache.xmlrpc.common.TypeFactoryImpl; import org.apache.xmlrpc.common.XmlRpcController; import o
转载 2023-08-23 17:11:52
99阅读
# 使用Java实现一个RPC ## 什么是RPC RPC(Remote Procedure Call)即远程过程调用,是种让程序调用远程服务的方式。通过RPC,我们可以像调用本地函数样调用远程服务器上的函数,使得分布式系统之间的交互变得更加简单和透明。 ## 实现一个简单的RPC框架 下面我们将使用Java语言来实现一个简单的RPC框架,包括服务端和客户端,并通过序列图来说明整个调用
原创 2024-04-29 05:19:11
47阅读
角色1)服务消费者2)服务提供者基础设施1)远程代理(jdk/cglib)2)序列化与反序列化(协议格式与序列化方法)3)网络传输(TCP/UDP)服务消费者1)连接管理TCP长连接,维护一个类似数据库连接池样的连接池,每次调用都拿出条连接,发送数据,可以多个线程共用条TCP连接,客户端调用后阻塞在某地方,数据回来根据会话ID唤醒对应线程,可以Map+CounDownLatch实现2)负载均
原创 2022-07-25 10:53:29
127阅读
1、面试题如何自己设计一个类似dubbo的rpc框架?2、面试官心里分析说实话,就这问题,其实就跟问你,如何自己设计一个MQ,样的道理,就考两:(1)你有没有对某个rpc框架原理有非常深入的理解; (2)你能不能从整体上来思考下,如何设计一个rpc框架,考考你的系统设计能力。3、面试题剖析我给大家一个建议,遇到这类问题,从你了解的类似框架的原理入手,自己说说参照dubbo的原理,你来设计
RPC框架称为远程调用框架,其实现的核心原理就是消费者端使用动态代理来代理一个接口的方法(基于JDK的动态代理,当然如果使用CGLib可以直接使用无接口类的方法),通过加入网络传输编程,传输调用接口方法名称,方法参数来给提供者获取,再通过反射,来执行该接口的方法,再将反射执行的结果通过网络编程传回消
原创 2022-05-04 09:42:36
140阅读
Cool-Rpc前言此博客所述项目代码已在github开源,欢迎大家起贡献! 点此进入:Cool-RPC最近次写博客还是17年底,谢谢大家持久以来的关注 本篇博文将会教大家如何从0到1,搭建一个简单、高效且拓展性强的rpc框架.什么是RPC相信大家都或多或少使用过RPC框架,比如阿里的Dubbo、谷歌的grpc、Facebook的Thrift等等那么究竟什么是rpc?rpc翻译成中文叫做远程过
项目1.0版本源码https://github.com/wephone/MeiZhuoRPC/tree/1.0在上博文中 跟大家讲了RPC实现思路 思路毕竟只是思路 那么这篇就带着源码给大家讲解下实现过程中的各个具体问题读懂本篇需要的基本知识 若尚未清晰请自行了解后再阅读本文java动态代理netty框架的基本使用spring的基本配置最终项目的使用如下/** *调用端代码及spring配置
在如何给老婆解释什么是RPC中,我们讨论了RPC实现思路。 那么这次,就让我们通过代码来实现一个简单的RPC吧! RPC实现原理 正如上讲所说,RPC主要是为了解决的两问题: 解决分布式系统中,服务之间的调用问题。 远程调用时,要能够像本地调用样方便,让调用者感知不到远程调用的逻辑。 还
转载 2019-03-12 09:31:00
48阅读
2评论
RPC(Remote Procedure Call) —— 远程过程调用,是一个计算机通信协议。该协议允许运行于
原创 2023-07-10 07:14:11
61阅读
1点赞
ChannelOption.SO_BACKLOG, 1024       BACKLOG用于构造服务端套接字ServerSocket对象,标识当服务器请求处理线程全满时,用于临时存放已完成三次握手的请求的队列的最大长度。如果未设置或所设置的值小于1,Java将使用默认值50。   ChannelOption.SO_BACKLOG对应的是t
转载 2024-05-21 23:02:38
61阅读
要能够像本地调用样方便,让调用者感知不到远程调用的逻辑。还是...
转载 2023-05-05 15:05:41
66阅读
1.RPC服务框架的基本结构RPC本质上就是“像调用本地方法样调用远程方法”,主要涉及到客户端和服务端的数据的传输,整体的RPC的框架服务就如下所示:2.使用HTTP实现服务的组成部分注册中心:zookeeper序列化方式:json网络通信:http协议代理方式:jdk动态代理3.项目结构├─rpc-http-api │  ├─src │  │  └─main │  │      ├─java
转载 2021-04-07 11:48:15
408阅读
2评论
RPC简介 远程调用协议。 有多有用,多普遍就不摆了。 大概过程: 1. 调用客户端句柄,传输参数。 2. 封装参数等消息为网络传输格式传给远程主机 3. 服务器句柄得到消息并解析参数 4. 在服务器段执行要调用的代码,并把结果返回给服务器句柄 5. 服务器句柄封装返回结果并用网络传输给客户端 6. 客户端解析并进行
系统长大后为了保证可维护性,拆分系统是一个比较常见的解决方案。系统拆分后,原来的接口直接调用方法不再可行,需要被替换成为远程调用过程。远程调用可以直接使用http协议post 一个请求到服务提供端,然后服务提供端返回一个结果给调用者。这种方案将原本数据service层的DO操作过程上升成为了web服务,我个人并不反感。第二种方案就是使用rmi 实现,但是rmi client 和server的地址耦
转载 2024-07-01 12:49:55
43阅读
手动实现PRC框架系列文章本系列文章,功能实现来自于 Github 作者 Java Guide的开源作品,我个人是选择边实现边学习的方式,本系列的文章是对Guide哥的作品地实现进行讲解和学习。( 作为我实现作品的笔记)下面是Guide作品的连接,推荐大家可以直接进去下载并且学习。(款基于 Netty+Kyro+Zookeeper 实现的自定义 RPC 框架-附详细实现过程和相关教程。) (gi
转载 2024-06-08 17:01:19
42阅读
RPC的全称是Remote Procedure Call,它是种进程间的通信方式。允许像调用本地服务样调用远程服务。对于RPC的总结:简单:RPC概念的语义十分简单和清晰,这样建立分布式计算更容易。高效:过程调用看起来十分简单而且十分高效。通用:在单机计算过程中往往是不同算法和API,在跨进程调用最重要的是通用的通信机制。对于RPC框架实现的技术点总结如下:远程服务提供者需要某种形式提供服务
转载 2024-04-15 23:09:15
55阅读
本文代码地址:https://github.com/MSC419/msc-rpc-framework 文章目录0.实现的改进1.RPC消息通用格式RpcMessage2.Netty心跳机制2.1 心跳2.2 IdleStateHandler2.3 实现Netty心跳机制2.3.1 客户端2.3.3 服务端3.通过注解自动扫描注册服务3.1 注解类3.2 工具类 ReflectUtil3.3 扫描服
手写一个RPC框架实现远程调用一个RPC框架需要解决哪些问题?通信问题代理问题序列化问题服务实例化注册中心注册
原创 2023-04-23 10:32:03
77阅读
前言在实际后台服务开发中,比如订单服务(开发者A负责)需要调用商品服务(开发者B负责),那么开发者B会和A约定调用API,以接口的形式提供给A。通常都是B把API上传到Maven私服,然后B开始写API的实现,A只需要引入API依赖进行开发即可。动手实现RPC商品服务工程注意,我将商品服务的API以及实现分为Maven的2模块来开发。这里,我们想给定一个商品ID,查询得到商品对象信息。商品对象要
推荐 原创 2018-01-09 21:26:44
10000+阅读
8点赞
12评论
开始尝试搭建一个RPC框架,先从最简单的写起。RPC(Remote Procedure Call)远程过程调用,是一个节点请求另一个节点提供的服务。如何实现呢,很简单,创建服务端和客户端,客户端通过网络传输,告诉服务端需要调用的接口,服务端接收到客户端发送来的请求后,执行这个接口的实现类,然后返回结果。这里直接假设客户端知道服务端的地址了,后面再进行更复杂的实现。后面的代码主要放关键部分。照着这个
转载 2024-02-08 06:57:47
49阅读
  • 1
  • 2
  • 3
  • 4
  • 5