RPC框架研究(一)Java回调机制

报名了阿里中间件性能大赛,我来说是一个全新的挑战,一切从空白学起,比赛的过程也是学习的过程

是的,想让自己学好,给自己报一个比赛吧~

就像当初学围棋,也是报了围棋比赛,为了不至于输的太惨,一个星期里学了好多东西

第一天 Java回调机制 晴

首先还是来看看赛事介绍

比赛总共分为两道题:"RPC"与"MOM”,两题都需完成。我们会对"RPC"成绩(qps)进行排名,排名前100位的队伍有资格进入MOM的比赛环节,若未进入前100名直接淘汰,最终名次由"MOM"成绩决定 。

赛题

首先解决RPC的,从今天开始,边学变解决这个问题

RPC赛题

一个简单的RPC框架

RPC(Remote Procedure Call )——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

框架——让编程人员便捷地使用框架所提供的功能,由于RPC的特性,聚焦于应用的分布式服务化开发,所以成为一个对开发人员无感知的接口代理,显然是RPC框架优秀的设计。

题目要求

1.要成为框架:对于框架的使用者,隐藏RPC实现。

2.网络模块可以自己编写,如果要使用IO框架,要求使用netty-4.0.23.Final。

3.支持异步调用,提供future、callback的能力。

4.能够传输基本类型、自定义业务类型、异常类型(要在客户端抛出)。

5.要处理超时场景,服务端处理时间较长时,客户端在指定时间内跳出本次调用。

6.提供RPC上下文,客户端可以透传数据给服务端。

7.提供Hook,让开发人员进行RPC层面的AOP。

衡量标准

满足所有要求。性能测试。

基础的RPC知识这里就不提了,同学们自己参考  RPC

实现基础的RPC框架也不难,主要使用了动态代理技术,简单说就是把客户端调用的方法代理到服务器端中执行,服务器端返回执行结果给客户端

难点在于 异步调用、返回异常类型、处理超时场景等

首先开始解决异步调用问题,如何实现异步框架,参考 http://www.cnblogs.com/Hybird3D/p/3346582.html

要实现异步调用,首先又得掌握Java回调

回调问题,有点类似于ajax的原理,把自己传递给对方,当对方要传递数据给自己时,直接调用自己的方法就可以了

参考

http://hellosure.iteye.com/blog/1130176

今天先学习了Java的回调原理,明天使用它来做出异步RPC框架

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 10:10:19

RPC框架研究(一)Java回调机制的相关文章

RPC框架研究(二)Hadoop源代码-1

报名了阿里中间件性能大赛,我来说是一个全新的挑战.一切从空白学起,比赛的过程也是学习的过程 是的.想让自己学好.给自己报一个比赛吧~ 就像当初学围棋,也是报了围棋比赛,为了不至于输的太慘.一个星期里学了好多东西 第二天 Hadoop源代码-1 小雨 天真的以为学了Java回调机制后就能够把原来的RPC框架改为异步调用了,结果对着代码一下午都没想出要怎么去改,怎么入手. 于是决定研究一下Hadoop的源代码,看看别人是怎么实现RPC的,这也是我第一次研究源代码,曾经都是仅仅管用.无论怎样实现. 使

一个例子教你理解java回调机制

网上很多例子都写的很难理解,笔者刚开始都已经弄晕菜了. 这个例子,应该是再简单,再简洁不过的了,例子目的是测试某个方法的执行时间.这里就写三个java类,一个接口,一个实现,还有一个用于测试时间的类. 要测试的方法,尽量占用执行的时间,这样明显一些,这里测试循环1000000次,并且打印出来. 测试类: public class MyMethod { public void mytest() { // TODO Auto-generated method stub for (int i = 0;

Java 回调机制详解

一.说明 最近在写代码,发现 Java 回调机制蛮实用.在网上搜索部分资料以后,现在按照自己的理解进行归纳总结 ,有理解错的地方,希望大家能够帮忙指正! 先从一个很简单的 Android 开发例子说起.我们在界面上使用 Button 时,为其增加点击事件监听大概需要以下几个步骤 : ① 实例化 Button 对象,如 btn_call_back: ② btn_call_back.setOnClickListener(MainActivity.this); ③本类实现 OnClickListene

彻底理解java回调机制

以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式: Class A实现接口CallBack callback——背景1 class A中包含一个class B的引用b ——背景2 class B有一个参数为call

Java基础9:解读Java回调机制

Java基础9:解读Java回调机制 模块间的调用 本部分摘自https://www.cnblogs.com/xrq730/p/6424471.html 在一个应用系统中,无论使用何种语言开发,必然存在模块之间的调用,调用的方式分为几种: (1)同步调用 同步调用是最基本并且最简单的一种调用方式,类A的方法a()调用类B的方法b(),一直等待b()方法执行完毕,a()方法继续往下走.这种调用方式适用于方法b()执行时间不长的情况,因为b()方法执行时间一长或者直接阻塞的话,a()方法的余下代码是

转:一个经典例子让你彻彻底底理解java回调机制

一个经典例子让你彻彻底底理解java回调机制 以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式: Class A实现接口CallBack callback——背景1class A中包含一个class B的引用b —

Java回调机制研究

1. 什么是回调函数 回调函数,顾名思义,用于回调的函数.回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数.回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机.回调函数包含下面几个特性: (1)属于工作流的一个部分: (2)必须按照工作流指定的调用约定来申明(定义): (3)他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作流的功能: 2.  回调机制 回调机制是一种常见的设计模式,它把工作流内的某个供,按照约定的接口暴露给外部使用者,为

Java回调机制解析

模块之间总是存在着一定的接口,从接口调用方式上看,可以分为三类:同步调用.回调和异步调用.同步调用是一种阻塞式调用,也是我们在写程序中经常使用的:回调是一种双向的调用模式,也就是说,被调用的接口被调用的同时也会调用对方的接口,这句话可能有点绕,等文章后面举例说明:异步调用是一种类似消息或事件的机制,解决了同步阻塞的问题,举例来讲:A通知B后,他们各走各的路,互不影响,不用像同步调用那样,A通知B后,非得等到B走完后,A才继续走.回调是异步的基本,因此下面着重说回调机制. 我们暂且不讨论回调的一些

java回调机制(写的很好)

以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式: Class A实现接口CallBack callback——背景1 class A中包含一个class B的引用b ——背景2 class B有一个参数为call