自定义RPC框架设计思路
2017-02-01 23:47
309 查看
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框架思路整理
- JEECG - 基于代码生成器的J2EE智能开发框架 续四: 查询条件SQL生成器设计思路
- 关于 Criteria 轻量级查询框架的设计与思路 探讨
- Jmeter通用接口性能测试框架设计思路
- IOCP服务端框架(含调用源代码例子)重新设计后,性能提升的难以相信,稳定性也很靠谱,聊聊我的设计思路吧!
- 求微博框架和设计思路
- [读书笔记]深入解析MapReduce架构设计与实现原理——CH4 Hadoop RPC基本框架
- 共享一份C#数据库持久层框架设计思路及其部分代码(原创)
- DWZ富客户端框架设计思路
- 笔记:深入解析MapReduce架构设计与实现原理 第4章 RPC框架解析
- 易用的C++ RPC服务框架 - pioneer - 1 - 设计目标和应用场景
- 无线客户端框架设计(4):自定义生命周期的设计(iOS篇)
- DWZ 富客户端框架设计思路与学习建议
- DWZ富客户端框架设计思路与学习建议
- MDI框架下管理多个自定义窗体的思路
- 解析: Flex初始化时、加载进度监控的设计思路: (3)视图与逻辑的分离(提供自定义进度条的可能性)
- 高并发web框架基本设计思路