Netty实战 -- 使用Netty实现分布式框架Dubbo RPC

效果

在这里插入图片描述

⛽静态代理的优缺点

缺点: 不利于扩展,调用一次就要创建一次对象,从而造成不必要的内存空间浪费

优点: 可读性好,逻辑简单,清晰明了

2.3 动态代理方式


动态代理又分为:JDK动态代理CGLIB动态代理

在程序运行时,运用反射机制动态创建而成,达到调用服务

使用以上的Subject类和实现类

SubjectInvocationHandler处理器类

package com.wanshi.netty.dubborpc.netty;

import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

public class SubjectInvocationHandler implements InvocationHandler {

private Object obj;

public SubjectInvocationHandler(Object obj) {

this.obj = obj;

}

@Override

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

Object res = method.invoke(obj, args);

return res;

}

}

ProxyFactry工厂类

package com.wanshi.netty.dubborpc.netty;

import java.lang.reflect.Proxy;

public class ProxyFactry {

public static Subject getInstance() {

SubjectImpl subject = new SubjectImpl();

System.out.println(“美团外卖,使命必达,跑腿代买!”);

SubjectInvocationHandler subjectInvocationHandler = new SubjectInvocationHandler(subject);

Subject proxy = (Subject) Proxy.newProxyInstance(subject.getClass().getClassLoader(),

subject.getClass().getInterfaces(), subjectInvocationHandler);

return proxy;

}

}

测试类

public static void main(String[] args) {

Subject subject = ProxyFactry.getInstance();

String buy = subject.buy(“饮料”);

System.out.println(buy);

}

效果

在这里插入图片描述

⛽动态代理的优缺点

两种动态代理对照表

| | JDK原生动态代理 | CGLIB动态代理 |

| — | — | — |

| 核心原理 | 基于 ”接口实现“方式 | 基于类集成方式 |

| 优点 | Java原生支持的,不需要任何依赖 | 对与代理的目标对象无限制,无需实现接口 |

| 不足之处 | 只能基于接口实现 | 无法处理final方法 |

| 实现方式 | Java原生支持 | 需要引入Jar文件依赖 |

三、Netty实现DubboRPC

====================================================================================

3.1 需求说明


  1. dubbo 底层使用了Netty作为网络通讯框架,要求用Netty实现一个简单的RPC框架

  2. 模仿dubbo,消费者和提供者约定接口和协议,消费者远程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值