RPC调用基础及Java学习笔记
Posted 北国故事
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RPC调用基础及Java学习笔记相关的知识,希望对你有一定的参考价值。
RPC调用四种方式
RPC | Remote Procedure Call |
---|---|
Sync | 同步调用,客户端调用远程服务接口时,业务线程Block,直到服务返回结果 |
Callback | 回调调用,客户端调用远程服务接口时,业务线程不Block,并且无结果返回,结果会在后续返回,并触发注册的Callback接口执行 |
Future | 异步调用,客户端调用远程服务接口时,业务线程不Block,无结果返回,但可以获取到这次调用的句柄Future实例,后续可以通过 该句柄获取服务的结果,该方式在优化性能时极为有用,一些与这次服务调用不相干的操作可以在服务未返回时执行,后续再通过 Future句柄获取服务结果,即很多事情是并行交叉的。多个互不相关的服务调用,也可以通过这种方式并行处理,缩短处理总时间 |
Oneway | 单向调用,客户端调用远程服务接口时,业务线程不Block,无结果返回,并且服务端无响应消息写回,客户端不关心服务端是否正 确处理请求,仅关心消息是否发送出去。对于应用发送Trace/Log之类的消息非常有用,性能最快,吞吐最大,资源最节约。 |
优雅编码 - 工具类编写
工具类的目标是要编写通用灵活的方法。重点注意参数的优化,多使用重载。
隐藏实现,编写自己的工具类方法,不要再业务代码直接调用第三方工具类
使用父类/接口
使用重载编写衍生函数组
使用静态引入,方便找到工具方法
物理上独立存放,独立维护
技术点总结
spring的aop和拦截器的使用
log4j的MDC使用
JDK的ThreadLocalInherbritableThreadLocal和的使用
对开发组长的要求
定义好代码框架,不要做太多、太细的要求,否则无法落地。这篇文章中,规范中要求做到的少,不准做的多,落地相对容易。
定义好统一的接口格式、异常、常量等
多使用AOP和ThreadLocal与InherbritableThreadLocal简化代码
亲自编写校验函数和工具类
代码评审中,严格控制函数的参数,不允许出现复杂参数和业务无关的参数
对开发人员的要求
不要养成面对debug编程,用日志代替debug
不要一上来就做整个功能测试,要一行一行代码一个一个函数测试
谨慎捕获异常和加空判断,加了空判断就要测试为空和不为空二种情况
日志也是代码的一部分,提交代码前先运行看一遍操作日志
以上是关于RPC调用基础及Java学习笔记的主要内容,如果未能解决你的问题,请参考以下文章