手写RPC框架
本专栏从介绍编写rpc底层的Nio、Netty技术开始,一步一步由浅入深的介绍编写一个rpc框架需要的要素,然后带领大家设计rpc框架,并从0开始编写这个框架。对于想要了解rpc,或者想要深入探索rpc框架原理的同学,是一个不可多得的好专栏哦
光仔December
技术宅,系统集成项目管理工程师,FCP-报表开发工程师,全国软件开发(C/C++)专业人才高级认证,2014年ACM-ICPC河南省赛区银奖,2014年第五届蓝桥杯河南赛区C/C++程序设计本科B组二等奖,2015年甲骨文杯全国Java程序设计大赛华中赛区A组二等奖,2015年中国大学生计算机设计大赛团队三等奖
展开
-
【RPC高性能框架总结】13.手写rpc框架-代码实现(六)
接上一篇《12.手写rpc框架-代码实现(五)》上一篇我们编写了提供具体服务的rpc-sample-server服务端以及定义公共服务规范的rpc-sample-api工程,实现了Service服务的实现和暴露以及服务接口规范。下面我们来编写接入了rpc-client工程的服务调用客户端实例工程rpc-sample-client。注:代码参考http://git.oschina.net/hua...原创 2019-04-23 10:49:55 · 1297 阅读 · 0 评论 -
【RPC高性能框架总结】12.手写rpc框架-代码实现(五)
接上一篇《11.手写rpc框架-代码实现(四)》上一篇我们编写了注册中心rpc-registry-zookeeper,来实现服务的注册和发现。那么至此,框架层的工程代码都已经完成,下面我们来编写引用框架层的客户端rpc-sample-client和提供具体服务的rpc-sample-server服务端以及定义公共服务规范的rpc-sample-api工程。注:代码参考http://git.os...原创 2019-04-13 13:01:34 · 821 阅读 · 0 评论 -
【RPC高性能框架总结】11.手写rpc框架-代码实现(四)
接上一篇《10.手写rpc框架-代码实现(三)》上一篇我们编写了rpc-server客户端工程,其作用是处理客户端发送过来的RPC请求,使用Handler处理客户端请求,获取相关的服务类调用的结果,使用Netty反馈回客户端。前面我们的客户端rpc-client会通过注册中心rpc-registry-zookeeper获取服务端注册到其中的服务信息,而服务端rpc-server会将相关的服务信...原创 2019-04-07 12:20:36 · 681 阅读 · 0 评论 -
【RPC高性能框架总结】10.手写rpc框架-代码实现(三)
接上一篇《9.手写rpc框架-代码实现(二)》上一篇我们编写了rpc-client客户端工程,其作用是使用Netty封装一个客户端网络层(RpcClient),以及rpc的服务动态代理(RpcProxy),即用来进行远程服务类加载和方法调用的代理类。编写完客户端之后,我们就来编写服务端,来根据客户端发送的方法调用请求,调用相关方法并反馈方法返回的对象。注:代码参考http://git.os...原创 2019-03-30 16:18:36 · 742 阅读 · 0 评论 -
【RPC高性能框架总结】9.手写rpc框架-代码实现(二)
接上一篇《8.手写rpc框架-代码实现(上)》上一篇我们编写了框架层的rpc-framework父级工程以及rpc-common公共(编码解码)工具类工程。本篇我们继续来编写rpc-client工程。注:代码参考http://git.oschina.net/huangyong/rpc(作者:黄勇)对于rpc-client工程我们要实现的是,使用Netty封装一个客户端网络层(RpcClie...原创 2019-03-24 16:11:31 · 829 阅读 · 0 评论 -
【RPC高性能框架总结】8.手写rpc框架-代码实现(一)
接上一篇《7.手写rpc框架-整体设计思路》上一篇我们介绍了整个手写RPC的设计思路,本篇我们来动手实现手写rpc框架的代码。这里我们先从框架层开始写起。我们先来回顾一下之前的工程结构:我们分别从客户端框架、服务端框架、公共模块,一直到应用层模块的顺序开始编写。注:代码参考http://git.oschina.net/huangyong/rpc(作者:黄勇)一、rpc顶级父工程编写...原创 2019-03-10 15:26:13 · 1392 阅读 · 1 评论 -
【RPC高性能框架总结】7.手写rpc框架-整体设计思路
接上一篇《6.高性能nio框架netty(下)》根据我们之前的对于RPC框架的基础介绍,NIO的理解以及Netty的学习,为下面自定义一个RPC框架的编写打下了基础。后面我们就来根据之前学习的RPC相关知识,使用Netty自己动手编写一个RPC框架。一、设计思路本篇我们来了解一下轻量级RPC框架的需求分析以及原理分析。我们要设计的RPC框架的基本机构如下图:该图从宏观上来看,下面一层...原创 2019-03-09 19:29:32 · 1325 阅读 · 0 评论 -
【RPC高性能框架总结】6.高性能nio框架netty(下)
接上一篇《5.高性能nio框架netty(中)》上一篇我们编写了使用Netty框架开发的客户端与服务端,并且详细编写了Handler处理类,又探索了InboundHandler以及OutboundHandler处理类的区别以及执行顺序。本篇我们来总结和介绍之前两篇出现的一系列API对象:1.Netty中的Handler业务处理类Handler在Netty中,无疑占据着非常重要的地位。H...原创 2019-03-02 13:12:14 · 1051 阅读 · 0 评论 -
【RPC高性能框架总结】5.高性能nio框架netty(中)
接上一篇《4.高性能nio框架netty(上)》上一篇我们编写了使用Netty框架开发的客户端的启动类“NettyTestClient”以及业务处理类“NettyTestClientHandler”,本篇我们继续编写服务端的启动类“NettyTestServer”以及业务处理类“NettyTestServerHandler”。1、服务端启动类首先编写服务端的“NettyTestServe...原创 2019-02-23 18:29:33 · 785 阅读 · 2 评论 -
【RPC高性能框架总结】4.高性能nio框架netty(上)
接上一篇《NIO示例代码编写和简析》上一篇我们使用java.nio包下的相关API完成了一个NIO的网络处理过程,实现了一个非阻塞的网络请求处理机制。那么按照之前的写法,无疑代码量和复杂度都是不低的,所以使用一个合适的、封装优雅的第三方开发库来帮我们简化开发,提高代码质量和运行效率,是最好不过的,而Netty就是我们的不二之选。一、Netty简介看之前,还是简单介绍一下Netty(摘自度...原创 2019-02-16 14:37:36 · 1267 阅读 · 4 评论 -
【RPC高性能框架总结】3.NIO示例代码编写和简析
接上一篇《NIO的原理以及与传统IO的对比》想要使用Java实现前面提到的高性能网络服务端,需要使用JDK1.4之后提供java.nio包下的ByteBuffer、SelectionKey、Selector、ServerSocketChannel以及SocketChannel;下面就是一个使用JDK提供的API编写的,一个完整的客户端以及服务端实现NIO交互的代码:一、创建工程打开MyE...原创 2019-01-27 14:42:55 · 504 阅读 · 2 评论 -
【RPC高性能框架总结】2.NIO的原理以及与传统IO的对比
上一篇我们学习了一个自定义rpc框架的设计思路,在最后我们提到了,rpc技术需要使用Socket进行网络传输,为了其能承受多线程、高并发的网络传输请求,需要使用非阻塞型的NIO框架来处理。本篇就来详细介绍一下什么是NIO,以及NIO的大致原理。一、简介NIO是New IO的简称,也叫做“non-blocking IO”,即非阻塞IO,为jdk1.4中提供的新API。当时Sun官方标榜的特性...原创 2019-01-12 23:16:41 · 1491 阅读 · 0 评论 -
【RPC高性能框架总结】1.自定义rpc框架的设计思路
一、RPC原理学习1.1什么是RPCRPC(Remote Procedure Call Protocol) ——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易...原创 2019-01-06 14:05:31 · 1411 阅读 · 0 评论