Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

high_performance_rpc_with_netty PDF 下载


分享到:
时间:2020-10-08 10:16来源:http://www.java1234.com 作者:转载  侵权举报
high_performance_rpc_with_netty PDF 下载
失效链接处理
high_performance_rpc_with_netty  PDF 下载

本站整理下载:
提取码:7wc4 
 
 
相关截图:
 
主要内容:

什么是Netty? 能做什么? Netty是⼀个致⼒于创建⾼性能⽹络应⽤程序的成熟的IO框架 相⽐较与直接使⽤底层的Java IO API, 你不需要先成为⽹络专家就可以基于Netty去构建复杂的⽹络 应⽤业界常⻅的涉及到⽹络通信的相关中间件⼤部分基于Netty实现⽹络层 设计⼀个分布式服务框架 Architecture 2 |
远程调⽤的流程 启动服务端(服务提供者)并发布服务到注册中⼼ 启动客户端(服务消费者)并去注册中⼼订阅感兴趣的服务 客户端收到注册中⼼推送的服务地址列表 调⽤者发起调⽤, Proxy从服务地址列表中选择⼀个地址并将请求信息<group, providerName, version>, methodName, args[]等信息序列化为字节数组并通过⽹络发送到该地址上 服务端收到收到并反序列化请求信息, 根据<group, providerName, version>从本地服务字典⾥ 查找到对应providerObject, 再根据<methodName, args[]>通过反射调⽤指定⽅法, 并将⽅法 返回值序列化为字节数组返回给客户端 客户端收到响应信息再反序列化为Java对象后由Proxy返回给⽅法调⽤者 以上流程对⽅法调⽤者是透明的, ⼀切看起来就像本地调⽤⼀样 重要概念: RPC三元组 <ID, Request, Response> 远程调⽤客户端图解 3 |
若是netty4.x的线程模型, IO Thread(worker) —> Map<InvokeId, Future>代替全局Map能更好的 避免线程竞争 远程调⽤服务端图解 重要概念: RPC三元组 <ID, Request, Response> 远程调⽤传输层图解 4 |
左图为客户端, 右图为服务端 设计传输层协议栈 协议头 协议体 metadata: <group, providerName, version> methodName parameterTypes[] 真的需要? 有什么问题? a. 反序列化时ClassLoader.loadClass()潜在锁竞争 5 |
b. 协议体码流⼤⼩ c. 泛化调⽤多了参数类型 能解决吗? Java⽅法静态分派规则参考JLS <Java语⾔规范> $15.12.2.5 Choosing the Most Specific Method 章节 args[] 其他: traceId, appName… ⼀些Features&好的实践&压榨性能 创建客户端代理对象 Proxy做什么? 集群容错 —> 负载均衡 —> ⽹络 有哪些创建Proxy的⽅式? jdk proxy/javassist/cglib/asm/bytebuddy 要注意的: 注意拦截toString, equals, hashCode等⽅法避免远程调⽤

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐