目前关于网络框架,什么基于事件架构(EDA)、异步、无阻塞,高性能等概念充斥,像这样框架真的太多。其中
mina、netty、grizzy等比较原始,相当于鼻祖,国内比较知名且基于以上的也很多、hsf、dubbo、venus等、先就一个标题,后面再把心得补充上去。
----------------------------------------------------华丽分割:于2013/9/4补充-----------------------------------------------
这里找了比较有代表性的一个框架summercool-hsf(http://summercool-hsf.googlecode.com/svn/trunk),听名字可能比较山寨,但整体代码还是很不错的,至少比一般类似rpc框架代码就简单得多,而且比较好看,我想,这样的代码应该符合大道至简的哲理吧,同时还分享一句在微博看到的句子,【如果你发现一堆比较别扭,纠结,混乱的代码,多半是有问题容易出现bug的代码】,编码这么长时间,我发现和作者有同感啊。
summercool-hsf在模仿hsf(high speed service framework),但绝对轻量级,除了最基本和核心的功能,作者还提供了一些辅助功能,但按照目前github开源工程中来说,这些辅助功能基本也是标配了,作者提供了基本统计分析功能(在statistic包中)、configserver(类似配置中心),jmx(框架基本监控功能)等,除此之外,summer-hsf底层通信框架只要建立在netty之上,接着下面,我会一步一步讲解这个框架是如何实现rpc功能的,当然也可以直接移步作者的博客(http://dragonsoar.iteye.com/blog/1769335)。
首先从网络编程基本基本的点来讲讲吧
1、关于压缩与序列化的算法,这个可能直接影响到该rpc框架的性能,当然序列化更是网络编程中不可忽视的环节,同时也是难点(容易出错)
hsf工程中分别划分两个包来做了简单实现、serializer包主要实现了两种序列化方法,一种是jdk自带的序列化,详见objectSerializer,另一个是kryoSerializer,至于两者优劣,没有做过测试,后面可就序列化单独再开一篇笔记来深入讲解、compression这个包主要讲了两种压缩方式,可支持的参数也很少,整个实现代码很简洁。
--------------------------------------------2013.9.5补充---------------------------------------------------------------------
只能不停地看,不断地学了,看了这么久的源代码,发现自己始终没有找到一种对自己适用的方式,可能还是底子不够硬,继续不断地学习,不是说,如果你学习一个东西,发现很吃力,可能某个环节比较薄弱,只能停下来,巩固相关背景知识了,发现框架代码关联性还是很强,不够纵观全局,迷迷糊糊,看某一块可能很简单,连接起来一堆堆地代码直接压死你,废话可能有点多,hsf是基于netty,可能需要对netty有一个大致认识,读取hsf源码才会轻松一点,(http://www.kafka0102.com/2010/06/161.html)讲解netty的文章,比较好
相关推荐
java实现rpc框架,实现序列化、动态代理、多路复用网络通信、高并发、注册中心、负载均衡等功能,支持http协议
本项目旨在基于C++语言实现一个RPC分布式网络通信框架项目,使用CMake在Linux平台上构建编译环境。它可以将任何单体架构系统的本地方法调用重构为基于TCP网络的RPC远程方法调用。该框架实现了同一台机器的不同进程...
SimpleRPCFramework是一款基于 Nacos 实现的 RPC 框架。网络传输实现了基于 Java 原生
Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。 tars协议采用接口描述语言(Interface description ...
基于boost.asio网络模块和protobuf通信描述的RPC实现##1 RPC实现框架目前实现的RPC只能一端的RPC client调用另一端的RPC service,没有返回值。如果需要返回值,另一端调用这一端的RPC,以参数作为返回值。RPC分为...
标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种...
自己动手写基于动态代理,使用ZooKeeper作为注册中心,以Netty进行网络通信的RPC框架。更多详情请查看相关博客:https://blog.csdn.net/qq_31142553/article/details/86316654
本项目旨在基于C++语言实现一个RPC分布式网络通信框架项目,使用CMake在Linux平台上构建编译环境。它可以将任何单体架构系统的本地方法调用重构为基于TCP网络的RPC远程方法调用。该框架实现了同一台机器的不同进程...
适合学习/练手、毕业设计、课程设计、期末/期中/大作业、工程实训、相关项目/竞赛学习等。 项目资源具有较高的学习借鉴价值,也可直接拿来修改复现。...2. 部分字体以及插图等来自网络,若是侵权请联系删除。
RPC,全称为RemoteProcedureCall,即远程过程...但从后续调用可以看出Computer1调用的是Computer2中的sayHi()方法,RPC屏蔽了底层的实现细节,让调用者无需关注网络通信,数据传输等细节。上面介绍了RPC的核心原理:RPC
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用!...基于 Connect UDP 和自定义网络协议(简单请求响应协议) 、Reactor 网络模型(one loop per thread + 线程池) 的轻量RPC框架(源码+项目说明).zip
sofa-pbrpc Google的protobuf RPC框架的轻量级RPC实现。 Wiki:https://github.com/baidu/sofa-pbrpc/wiki功能高性能。 易于使用。 请参阅“ ./sample”中的示例代码。 Su sofa-pbrpc Google的protobuf RPC框架的轻...
采用Netty4.x网络编程实现高性能高并发的RPC开源框架, 基于Java语言来开发(JDK1.8)
在性能基础之浅谈常见接口性能压测一文中我们有简单介绍常见的RPC接口,本文将单篇详细介绍RPC框架。RPC(RemoteProcedureCall)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络...
RPC框架用于屏蔽RPC调用过程中的序列化,网络传输等技术细节。让调用方只专注于调用,服务方只专注于实现调用。 什么是序列化?为什么需要序列化? 把对象转化为连续二进制流的过程,叫做序列化。磁盘存储,缓存存储...
实现了 JSON-RPC 和 XML-RPC 的服务器端的 Tornado 网络框架
框架是Netty,代码主要分为 provider registry protocol和consumer等。 实现本地调用LPC和远程调用RPC,对比了二者的速度。 RPC部分代码参考书籍:《Netty4核心原理与手写rpc实战》
本文需要一点Python socket基础。 回顾RPC 客户端(Client):服务调用方。 客户端存根(Client Stub):存放服务端...实现jsonrpc 在实现前,简单理一下整体思路。 1、Network Service 直接使用Python Socket相关
jrpc是一个异步多线程的RPC框架, 采用json格式的序列化/反序列化方案, 传输协议为. 框架的结构如下图所示: 位于框架底层, 向下调用Linux socket API, 向上提供消息回调. 此外,网络库还具有定时器, 线程池, 日志输出...
rpc-frmwrk这是一个嵌入式的RPC实现,关注于跨网络,跨协议,跨平台的互联互通。这是一种异步的和事件驱动的RPC实现,适用于占用系统空间小的嵌入式系统。它针对物联网平台,高吞吐量和混合网络上的高可用性。欢迎...