
自定义rpc框架
墨染百城
目前专注于数据分析、大数据计算方面的学习
展开
-
自定义RPC框架实现计划
自定义的RPC框架就叫Mrpc吧,然后分三大步实现整个框架。时间是2天。Step1 用几个小Demo程序分别实现框架的各种功能。Step2 在一个工程中利用之前的Demo小程序实现整个框架的功能,包括客户程序、和框架Step3 把框架划分成几个项目,使用Maven管理依赖,打成可用的Jar包文档什么的就先算了。。。Step1 功能细分demo1 对象与byte[]的相互转换,可用Proto原创 2017-02-04 21:30:47 · 516 阅读 · 0 评论 -
Java nio简介及使用示例
同步-阻塞io的缺点之前的socket实现rpc中我们使用了类似下面的代码来从服务端获取客户端的输入:while(true){ line = br.readLine(); if(line.equals("goodbye")){ break; } // handle business}这种的处理明显是有些问题的。如果因为某些原因如突然断电等原因导致客原创 2017-02-02 01:10:41 · 541 阅读 · 0 评论 -
自定义RPC框架设计思路
RPC简介RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式。请求原创 2017-02-01 23:47:38 · 895 阅读 · 0 评论 -
学习TDD(5)--实例2:基于ZooKeeper的服务器注册和探测类[实战ServerDetector]
接下来我们来写发现可用服务器的工具类ServerDetector。以后不再写这种复杂实例的博客了,写了好久啊。示例代码已上传到http://download.youkuaiyun.com/detail/mrbcy/9753008测试类package tech.mrbcy.mrpc.test.client;import java.net.InetSocketAddress;import java.util.co原创 2017-02-13 01:39:41 · 443 阅读 · 0 评论 -
学习TDD(4)--实例2:基于ZooKeeper的服务器注册和探测类[实战ServerRegister]
有了上一篇博客中给出的测试用例(详见),我们现在可以进行开发了。先写ServerRegister类的第一个测试。public class ServerRegisterTest { private String zkConnetionString = "amaster:2181,anode1:2181,anode2:2181"; private int sessionTimeout =原创 2017-02-12 02:01:37 · 476 阅读 · 0 评论 -
Mprc开发过程总结
经过一个多星期以来断断续续的开发,终于完成了一个远程调用框架–Mrpc。客户代码只要方便的写一些注解并配置一下Spring框架的配置文件就可以方便的实现rpc了,而且框架使用了ZooKeeper,因此也实现了负载均衡。配套的代码我已经上传到http://download.youkuaiyun.com/detail/mrbcy/9753726在框架的开发过程中遇到了许多的问题,基本通过搜索解决了。不过我也自主的解原创 2017-02-14 00:38:41 · 550 阅读 · 0 评论 -
【Mrpc】Demo4 客户端动态代理的创建
本来第4个demo应该是Spring框架获取自定义注解的类的实例对象列表。但是这篇文章已经写过,不再赘述,可以参考http://blog.youkuaiyun.com/mrbcy/article/details/54839463因为接口的实现是在服务端的,因此客户端没有办法直接拿到一个实现类的对象的,因此必须由框架提供一个动态代理。这个动态代理截获客户的调用请求,然后向服务器发起调用,最后将服务器的响应发回给客原创 2017-02-06 14:34:41 · 358 阅读 · 0 评论 -
【Mrpc】Demo3 基于netty的服务器和客户端。
Demo3实现如下功能,客户端发送一个Request对象(包含id,方法名,方法参数列表和调用参数列表)到服务端,服务端解析后调用客户端指定的方法,并返回一个Response对象(包含id,是否异常,异常,返回值)。客户端和服务端均基于netty实现。代码已上传到http://download.youkuaiyun.com/detail/mrbcy/9747693要点解析netty这个真的很重要,具体的参考官方原创 2017-02-06 03:00:49 · 871 阅读 · 0 评论 -
【Mrpc】Demo2 基于Zookeeper的服务器感知及负载均衡
由于服务器经常会维护,把服务实现服务端的地址直接写在客户端(包括配置文件里)都是不太好的。比较好的办法是服务端启动的时候把自己的地址注册到ZooKeeper集群中,然后客户端启动时即可获得所有服务器列表,并选择一个合适的服务器为自己提供服务。这样解决了服务端地址的获取问题,同时也解决了服务端的负载均衡问题。来看一下相应的代码。项目源码已经上传到http://download.youkuaiyun.com/det原创 2017-02-05 19:57:06 · 301 阅读 · 0 评论 -
【Mrpc】 Demo1 对象与byte[]的相互转换
实现rpc框架时服务端与客户端之间的通讯发送的数据都是二进制数据,但实际上它们传送的内容都是一个个的对象。因此需要一个工具类来实现对象与byte[]的相互转换代码资源已上传到http://download.youkuaiyun.com/detail/mrbcy/9747217所用技术我使用了protostuff框架来辅助进行转换操作。工具类代码如下:ProtostuffUtil.javapackage tech原创 2017-02-05 00:30:04 · 484 阅读 · 0 评论 -
自定义RPC框架实现计划
自定义的RPC框架就叫Mrpc吧,然后分三大步实现整个框架。时间是2天。Step1 用几个小Demo程序分别实现框架的各种功能。Step2 在一个工程中利用之前的Demo小程序实现整个框架的功能,包括客户程序、和框架Step3 把框架划分成几个项目,使用Maven管理依赖,打成可用的Jar包文档什么的就先算了。。。Step1 功能细分demo1 对象与byte[]的相互转换,可用Proto原创 2017-02-04 21:32:07 · 336 阅读 · 0 评论 -
自定义RPC框架实现计划
自定义的RPC框架就叫Mrpc吧,然后分三大步实现整个框架。时间是2天。Step1 用几个小Demo程序分别实现框架的各种功能。Step2 在一个工程中利用之前的Demo小程序实现整个框架的功能,包括客户程序、和框架Step3 把框架划分成几个项目,使用Maven管理依赖,打成可用的Jar包文档什么的就先算了。。。Step1 功能细分demo1 对象与byte[]的相互转换,可用Proto原创 2017-02-04 21:32:02 · 304 阅读 · 0 评论 -
自定义RPC框架思路整理
RPC框架数据流程RPC框架服务端启动原理要使用我们自定义的RPC框架,服务端必须要做下面两件事:在业务接口的实现类上面添加@RPCService注解在Spring框架的applicationContext.xml文件中配置框架提供的bean<bean id="rpcServer" class="cn.itcast.rpc.server.RpcServer"> <constructor-原创 2017-02-04 00:26:20 · 1930 阅读 · 0 评论