自定义RPC框架设计思路
来源:互联网 发布:webdriver js 编辑:程序博客网 时间:2024/06/05 17:15
RPC简介
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
框架设计目标
如图所示,客户端要调用orderService的createOrder方法,但是客户端本身没有orderService的实现,这个实现在服务器上面。现在要求通过我们的框架,客户端和服务器上面的代码只要加上注释就可以实现客户端调用服务器上的代码。
设计思路
服务器端
服务器端的函数加上注解后要变成一个服务,这个服务必须是一个socket服务,监听客户端的请求。
程序启动时通过Spring框架可以拿到这些注解,然后可以通过ApplicationContext可以获得所有的服务及具体实现类的列表,放入到一个map中。
然后可以把这个map传递给SocketServer。SocketServer负责根据客户端传入的serviceName通过反射机制调用具体的服务,然后返回给客户端。
SocketServer通过Spring机制启动,不需要用户介入。
客户端
给标注autoWired的对象注入一个动态代理,调用方法时可以拿到具体的方法名和args,然后通过socket请求SocketServer的相应服务,然后将服务器返回的结果返回调用方。
客户端如何知道服务端的地址在哪呢?可以通过ZooKeeper集群注册。
总体设计图
涉及的技术
ZooKeeper、动态代理、反射、netty、nio、Spring
继续学习。
- 自定义RPC框架设计思路
- 自定义RPC框架思路整理
- RPC框架实现思路浅析
- 如何设计RPC框架
- 手记_从生活模型抽象到计算机分布式系统RPC框架设计思路_咕泡
- 自定义RPC框架实现计划
- 自定义RPC框架实现计划
- 自定义RPC框架实现计划
- 设计框架的思路
- 分布式RPC框架fox设计
- ci框架&框架设计思路
- 求微博框架和设计思路
- Server 框架设计思路分享
- 自动化测试框架设计思路
- RPC框架设计和调用详解
- 自定义ASP.NET CheckBox的设计思路
- 用户自定义排序功能的设计思路
- RPC框架
- 51NOD 1625 夹克爷发红包 枚举+贪心
- [LeetCode] Patching Array
- Arduino读取红外遥控与digitalWrite邂逅
- Codeforces 761B-Dasha and friends
- 《机器学习实战》读书笔记2:K-近邻(kNN)算法 & 源码分析
- 自定义RPC框架设计思路
- Abp之工作单元与事务
- std::string是字符串吗?
- 3.1栈
- 一边搭建一边理解MongoDB副本集(副本集回滚)
- 数组指针与二级指针如何转化
- SDOI 2010 地精部落 DP
- android studio测试--Uiautomator
- 线程小酌之JAVA中的阻塞队列