自己实现RPC框架(1)
来源:互联网 发布:python sleep用法 编辑:程序博客网 时间:2024/05/22 04:58
1.闲话
好久没写博客了,我想在接下来时间,写一个我自己用java实现的Rpc框架博客,有兴趣的要源码可以加我qq索取(657455400), 今天我只讲下大致实现思路,和介绍我写的基本组件。
2.框架所用知识
1.netty4 : 异步的、事件驱动的网络应用程序框架,我用的原因,高性能io,用法简单。2.javassist : 开源的分析、编辑和创建Java字节码的类库。3.other:gson(json解析),dom4j(xml解析),java反射等。
3.RPC测试
1.首先服务器和客户端都应该有同一份接口public interface LoginService { public Boolean login(User user);//登陆 public User register();//注册}2.服务器端还得写接口的实现 @Service //代表是要注册的接口public class LoginServiceImpl implements LoginService { public Boolean login(User user) { System.out.println("App>> " + "用户登陆: username:" + user.getUserName() + " password:" + user.getPassword()); return true; } public User register() { System.out.println("App>> 用户注册"); User user = new User(); user.setUserName(System.currentTimeMillis()+""); user.setPassword("123456"); return user; }}3.开启rpc服务器public class Main { public static void main(String[] args) { Server server = RPC.getServer(Configuration.class); server.start(); }}4.客户端public class ClientMain { public static void main(String[] args) throws Exception { LoginService service = RPC.waitForProxy(LoginService.class, Configuration.class); User user = service.register(); System.out.println("注册成功 " + user); boolean res = service.login(user); System.out.println("登录结果: " + res); }}5.结果调用成功
4.大致实现思路
1.首先在netty框架上进行封装,让用法更简单,我这里讲netty封装成类似websocket结构,用法如下图展示:
2.制定协议客户端发起远程调用协议:客户端要调用服务器接口的实现类方法,必须传递:接口名,方法名,参数信息。如下json:{ protocol:1, //协议类型(表示要远程调用) body:{ i_name:"Hello", ##接口名 m_name:"hello", ## 方法名称 p:[ # 参数 {}, {} ] }}同理服务器回复远程调用协议:{ protocol:1, body:{ i_name:"Hello", ##接口名 m_name:"hello", ## 方法名称 m_return:{}, # 方法返回值 } }3.服务器开发 这里大致讲解。首先扫描所有的接口实现类。实例化,并用map缓存起来,客户端发来rpc后,根据接口名的方法,找到对应Method,然后invoke此方法,执行完后包装协议并回复客户端。4.客户端开发 也是大致讲解,客户端调用RPC.waitForProxy时,会阻塞干两件事情,第一与服务端建立连接,第二利用javassist动态生成传入接口的实现类,并缓存,两件事成功后,才返回,当调用接口的方法时,才向服务器发起rpc,等待返回结果。
5.总结
这里面还有很多细节问题,后面会一一讲解,其实看源码是最好的,我也不一定能将的很详细。
老生常谈:深圳有爱好音乐的会打鼓(吉他,键盘,贝斯等)的程序员和其它职业可以一起交流加入我们乐队一起嗨。我的QQ:657455400
阅读全文
0 0
- 自己实现RPC框架(1)
- 自己实现一个RPC框架
- 自己实现RPC框架(2)
- 自己实现RPC框架(3)
- 自己实现RPC框架(4)
- 自己实现一个简单的RPC框架
- 编写自己rpc框架——java rpc的实现
- 分布式学习笔记1通过Java自己实现简单的HTTP RPC框架
- 实现自己的RPC框架的细节思考
- 实现java RPC框架
- 实现java RPC框架
- 实现java RPC框架
- RPC框架的实现
- 从零开始实现RPC框架
- 自己实现简单RPC功能
- 自己实现简单RPC功能
- 自己实现简单RPC功能
- 自己实现简单的RPC
- UML的类图详解
- 1.1PHP语言发展历史及其适合的应用领域
- 在Mac系统中怎么将硬盘格式化为NTFS格式
- Android自带库 --- 与系统架构构建有关
- Pvelite v5.00 Full.iso
- 自己实现RPC框架(1)
- C++ 迭代器Iterator的分类
- 云存储
- 20170604学习笔记整理
- Java 基础之反射
- teamviewer Not ready only LAN 无法连接
- Java笔试题解(14)
- Kotlin入门系列教程—String
- nginx-视频直播和点播服务的干货分享