Re赛题FAQ
-------------------------
回4楼dayinlives的帖子
http://code.taobao.org/svn/race/trunk/rpc-framework/rpc-use-demo
-------------------------
回3楼默欹的帖子
对于题目的这两点,应该怎么理解啊?
简单理解:hook就是方法调用前后做个钩子,可以在钩子函数上做一些新的事情,比如做统计,作分析。 context就是把一些数据额外传递到远端。
6.提供RPC上下文,客户端可以透传数据给服务端。
覆盖的测试:
http://code.taobao.org/p/race/src/trunk/rpc-framework/rpc-use-demo/src/main/java/com/alibaba/middleware/race/rpc/demo/builder/ConsumerBuilder.java
里面的
/**
* use {@link com.alibaba.middleware.race.rpc.context.RpcContext} to pass a key-value structure to Provider
* {@function getMap()} will pass this context to Consumer
*/
@Test
public void testRpcContext() {
RpcContext.addProp("context", "please pass me!");
Map<String, Object> resultMap = apiService.getMap();
Assert.assertTrue(resultMap.containsKey("context"));
Assert.assertTrue(resultMap.containsValue("please pass me!"));
}
对应场景:
有些业务 不想改现有接口 但想从客户端 再传个东西给服务端。
7.提供Hook,让开发人员进行RPC层面的AOP。
见这个例子:
首先
http://code.taobao.org/p/race/src/trunk/rpc-framework/rpc-use-demo/src/main/java/com/alibaba/middleware/race/rpc/demo/service/RaceConsumerHook.java
消费者端注册了一个钩子函数。
然后在:
http://code.taobao.org/p/race/src/trunk/rpc-framework/rpc-use-demo/src/main/java/com/alibaba/middleware/race/rpc/demo/builder/ConsumerBuilder.java
@Test
public void testConsumerHook() {
Map<String, Object> resultMap = apiService.getMap();
Assert.assertTrue(resultMap.containsKey("hook key"));
Assert.assertTrue(resultMap.containsValue("this is pass by hook"));
}
可以看到,钩子函数通过上下文传递到了下游。
-------------------------
回8楼游小游的帖子
http://code.taobao.org/p/race/wiki/index/?spm=0.0.0.0.tvnoVj