基于Java实现的RPC项目源码+项目说明.zip基于Java实现的RPC项目源码+项目说明.zip基于Java实现的RPC项目源码+项目说明.zip基于Java实现的RPC项目源码+项目说明.zip基于Java实现的RPC项目源码+项目说明.zip 【优质项目推荐】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 2.项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、项目初期立项演示等用途。 4.如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能。 基于Java实现的RPC项目源码+项目说明.zip 实现流程 ## 第一步:写IDL文件 IDL.Hello的内容直接编写完毕。 按照grpc的方式,编写接口HelloService,以及里面的消息体HelloRequest和HelloResponse,客户端和服务器都使用这同一套接口 ## 第二步:编写RPC协议 RpcRequest和RpcResponse都是RPC协议,RPC协议包括header和body两部分,header我们用String表示,body我们用序列化后的byte[]流表示,这里的字节流的序列化的方式可以是Java的序列化方式,可以换成JSON序列化方式,也可以用Thrift、PB序列化方式,为了简单,我们这次直接用Java的序列化方式。 然后body中被序列化的内容,因为是codec层的工作,放在了codec包中,RPCReuqest要调用一个方法,需要知道接口名、方法名、参数、参数类型,因此把这些东西放进RpcRequestBody中即可,后面把它序列化后房价RpcRequest的body字节流中;同理,RPCResponse 的body中,只需要一个被序列化后的Java Object即可。 ## 第三步:分析 我们的rpcClient要执行一个函数hello,传入参数HelloRequest,然后返回HelloResponse。 整个流程就是:客户端获得rpcService对象,使用rpcService对象执行hello方法,那么rpcService底层实现就发送一条RpcRequest协议(对比HTTP协议)把:要执行的接口名+方法名+参数类型+具体参数序列化后,放进RpcRequest协议的body字节流中,然后给RpcRequest加上header,发给服务端,服务端解析出Rpc协议的body(对比HTTP协议解析body)中的接口名、方法名等,直接调用本地的接口的实现,然后将返回值包装成一条RpcResponse消息,发送给客户端即可,rpcService底层将该response消息解析,从body中拿到(也是对比HTTP解析body)返回值,然后返回给客户端。 ## 第四步:客户端实现(动态代理) 客户端方面,客户端本地只有IDL.Hello中的内容,没有方法的具体实现,也就是说要调用一个没有实现的接口,显然,我们使用Java反射的动态代理特性,实例化一个接口,将调用接口方法“代理”给InvocationHandler中的invoke来执行,在Invoke中获取到接口名、方法名等包装成Rpc协议,发送给服务端,然后等待服务端返回。 ## 第五步:服务端实现(反射调用) 服务端方面,本地需要实现接口的方法,然后在启动监听网络之前注册所有的接口,当消息到来的时候,根据RpcRequestBody中的接口名拿到接口对象,然后用反射的方式调用即可,将调用结果包装成RpcResponse,发送给客户端。 ## 第六步:测试 编写测试用例 一共两个接口,HelloService和PingService,HelloService有两个方法:hello和hi,PingService有一个方法:ping
































































































- 1

- 2301_787220512024-07-21资源是宝藏资源,实用也是真的实用,感谢大佬分享~

- 粉丝: 4209
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大型煤炭企业项目管理论文.doc
- 数据库实验研究分析.doc
- 支持通用OpenAPI的AI聊天界面,支持实时对话和流式响应
- 2019年计算机实习的工作总结.doc
- 计算机实训心得体会的相关范文.doc
- 2020年LTE系统下的D2D通信技术分析研究论文.doc
- Unit3Understandingideas导学案-高中英语外研版选择性.docx
- 清单填报软件使用说明.doc
- 谈对工程项目管理索赔的认识-工程管理毕业论文.doc
- VB高级编程Transparancy2完美版资料.ppt
- 某集团网站方案书(多篇).doc
- 改善程序设计技术的50个有效做法电子教案.ppt
- 基于ieee802.15.4的无线传感器网络的研究(定稿).doc
- 系统软件推广销售合作协议模板.doc
- 【精品课件】教育科学出版社高中信息技术必修:信息技术基础7.3.2认识数据库管理(7).pptx
- 项目管理网上作业.docx


